monodbc使用方法
ここでは OpenOffice.org 3.2.1 日本語版を例に説明します。
OpenOffice.orgのデータベースセットアップ
- OpenOffice.orgを起動して【データベース(D)】を選択します。
- 「既存のデータベースに接続」にチェックをし、「ODBC(最下行)」を選択。【次へ】をクリックします。
- 「OpenOffice.orgデータベースウィザードへようこそ」の画面になったら「既存のデータベースに接続」にチェックをし、「ODBC(最下行)」を選択します。
- 「ODBCデータベースとの接続のセットアップ」の画面になったら【ブラウズ】をクリックし「データソースを選択します」の画面で「Hakama Datasource」を選択し【OK】をクリックします。
- 「データベースを保存したあとの処理を決定してください」の画面で【完了】をクリックすると「名前をつけて保存」画面が開きますので、名前をつけて保存します。
- 正常に接続できると【テーブル】を接続することでテーブル一覧が表示されます
テーブル操作の仕方
monodbcでは直接PostgreSQLデータベースに接続する場合と違い /usr/lib/jma-receipt/record/にある*.db定義体に基づき、テーブル名とパス名を '$'で連結したものとなります。
テーブル一覧からパラメータを必要としない有効なSQLのDB定義体だった場合はテーブルをクリックすることでデータを閲覧することが出来ます。パラメータを必要とする定義体は後述する方法でパラメータを渡す必要があります。
例えば tbl_byomei.dbに以下のような定義体があった場合には tbl_byomei$all というテーブル名でアクセス出来ます。
tbl_byomei { 〜〜〜〜〜略〜〜〜〜〜〜〜 } path all { DBSELECT { DECLARE tbl_byomei_all_csr CURSOR FOR SELECT * FROM tbl_byomei ; }; };
SQLクエリーの記述の仕方
SELECT文の解釈
列名には*または、パスに存在する列名を指定できます。 SELECT文で列名のリストが指定された場合は、指定されたフォーマットで 出力されます。 たとえば、あるパスのSELECT定義が、
SELECT * from tbl_adrs$all;
となっていた場合でもODBCに対して
SELECT POST,PREFNAME,CITYNAME,TOWNNAME FROM tbl_adrs$all;
など、列名を指定すれば指定された列の並びで行が取り出せます。 ただし、通信上はパスに定義されているすべての列が送信されています。
WHEREの解釈
SQL中でのWHERE文は、単にパスにキー値を設定するだけのものになります。
例えば、tbl_adrsのSELECT定義が以下のようになっていた場合はSQLでのWHERE文はいかなる論理式を書いても:HOSPNUMに値をセットするように解釈されます。
path all { DBSELECT { DECLARE tbl_adrs_all_csr CURSOR FOR SELECT * FROM tbl_adrs WHERE HOSPNUM = :HOSPNUM; }; };
以下のようなODBCのクエリーを書いても
SELECT POST,PREFNAME,CITYNAME,TOWNNAME FROM tbl_adrs$all WHERE HOSPNUM < 1;以下と書いた場合と結果は同じになります。
SELECT POST,PREFNAME,CITYNAME,TOWNNAME FROM tbl_adrs$all WHERE HOSPNUM = 1;
※現状ではクエリーの書き方によってエラーとなる場合もあります。