Loading
ライブラリ(カテゴリ別)
カテゴリ別のADPの組込述語(ライブラリ)について説明します。
DBライブラリ
ADPにはODBC-APIを使用したDBライブラリが組み込まれています。
下記のようなコードにより、自然にSQLが発行できる他、select,insert,update,delete,saveと言ったよりシンプルな述語も用意されています。
以下のコードでは、カレントディレクトリにあるtest_db.mdbというMS AccessデータベースのMYTABLEテーブルのデータをCSV形式に変換し表示します。
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb"),!;
,db.sql@("SELECT * FROM MYTABLE ", {}).csv.prtn,next;
DBライブラリ・リファレンス
■ODBC接続文字列
DBライブラリに共通する事項ですが、各述語の第一引数にはODBCの接続文字列を指定します。
,sql("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb", ・・・・・
通常ODBCの接続文字列は長くなる傾向がある為、その定義をホーン節にし、メソッド形式(.)を使い述語を連結させると便利です。以下の例は上記の例をホーン節とメソッド形式を使って記述し直しています。
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb"),!;
,db.sql(・・・・・
ODBC接続文字列は、2種類の記述方法が存在します。
- DSN方式(データソース方式)
WindowsのコントロールパネルのODBCデータソースアドミニストレーターで作成するDSNの名称を指定する方式です。以下、adp_testおよびadppというデータソースを定義しています。
Linux(unixODBC)の場合は、/etc/odbc.iniファイルまたは~/.odbc.iniファイルで記述するDSNの名称を指定します。以下の例では、adp_testがDSN名になり、各種パラメータを指定しています(DriverのMySQLは/etc/odbcinst.iniに記述されているドライバ名になります)。
[adp_test]
Description=ADP DB LIBRARY TEST
Driver=MySQL
SERVER=dbserver.example.com
PORT=
USER=adp_test
Password=dbuserpassword
Database=adp_test
OPTION=65539
SOCKET=
CHARSET=utf8
以下、DBライブラリのDSNの指定例です。
+db("DSN=adp_test");
,db.select(・・・・
DSN=に続けてデータソース名(adp_test)を指定しています。
- Driver方式
データソースを作成しないで、'Driver='の文字列ではじまり、ドライバ名とパラメーターを直接指定します。ドライバ名の調べ方ですが、環境により分かれます。
□Windows版のドライバ名
ODBCデータソースアドミニストレーターのドライバータブで参照できるドライバの名前を指定します。
□Linux版のドライバ名
/etc/odbcinst.iniで、[]で囲まれた文字列がドライバ名になります。
+db("Driver={Microsoft Access Driver (*.mdb)}; DBQ=test_db.mdb"),!;
,db.sql(・・・・・
具体的なODBCの接続文字列の説明は各種DBMSのマニュアルを参照頂ください。以下、動作確認が取れた接続文字列を示します。
ODBC接続文字例
データベース | 指定方法 |
MS Access | Driver={Microsoft Access Driver (*.mdb)}; DBQ=MDBファイルパス |
SQL SERVER(2008以降) | DRIVER={SQL Server Native Client 10.0};SERVER=SQL Serverのサーバー名または.(ローカルホスト);Trusted_Connection=yes;Database=データベース名;MARS_Connection=yes
※SQL Serverに対してselect/insert/update/save/delete述語を使用する場合は前もって、_table_quote述語を呼び出す必要があります。
|
MySQL(Windows) | Driver=MySQL ODBC 5.1 Driver;UID=ユーザID; PWD=パスワード; SERVER=サーバー名; DATABASE=データベース名;CHARSET=キャラクターセット
※ドライバ名 'MySQL ODBC 5.1' は環境によっては異なる場合があり、ODBCデータソースアドミニストレーターのドライバタブで確認できます。
キャラクターセットは日本語OSならcp932と指定します(MySQLのODBCドライバーのバージョンが5以上の場合、必ず指定してください)。
|
MySQL(Linux) | Driver=MySQL;UID=ユーザID; PWD=パスワード; SERVER=サーバー名; DATABASE=データベース名;CHARSET=キャラクターセット
※ドライバ名 'MySQL' は環境によっては異なります。/etc/odbcinst.iniで、[]で囲まれた文字列がドライバ名になります。
MySQLのODBCドライバーのバージョンが5以上の場合、キャラクターセットは必ず指定してください(UTF8の場合は、utf8 と指定します)。
|
接続の管理とコミット
DBライブラリのDBに対する接続は、ODBC接続文字列単位で行われます。つまりODBC接続文字列が同じ述語の呼び出しは同一の接続で行われます。ODBC接続文字列が異なる場合は別の接続となります。
また、DBライブラリはトランザクションモードをマニュアルコミットで初期化しています。
つまりデータに対して追加・更新・削除等を行った場合、commit述語を呼び出さない場合、プログラム終了時にロールバックされます。commit述語を呼び出した段階でトランザクションがコミットされます。手動でrollbackを呼び出すことも出来ます。
64ビットWindowsにおける 32ビットODBCドライバ(MS Access)
一部のWindowsでは、MS AccessのODBCドライバは32ビット版しかない為、32ビット版のADPコマンドを使用します。64ビット版のADPコマンドではMS Accessドライバを使えません。
また、64ビットWindowsで32ビットODBCデータソースアドミニストレーターを呼び出すには以下のパスのコマンドを実行します(Windowsがデフォルトのパスでインストールされている場合)。
C:\WINDOWS\syswow64\odbcad32.exe
DBライブラリ・リファレンス
変換
各種変換を行います。
ADPに特徴的なのが、csv(csv形式への変換)があります。
変換リファレンス
文字列操作・正規表現
文字列の操作および正規表現の述語になります。
文字列の操作述語の名称はbasicをモデルにしています。
ascii / chr / left / right / mid / instr / replace / replace first / split / trim
replace述語は全文字列の置換を行います。最初の一つだけ置換したい場合は、replace_firstを使用します。
C言語(および多くの言語で使用されている)sprintf 述語があります。
正規表現に関する述語は、正規表現の検索(search)および置換(regex_replace /
regex_replace_first)になります。
その他、sha1(SHA1ハッシュの作成)、rkey(ランダムなキーの作成)、now(時刻の文字列取得)、urlencode/urldecode があります。
文字列操作・正規表現リファレンス
数学
ファイルアクセスライブラリ
Netライブラリ
ネットワーク関係のライブラリになります。以下の述語があります。
- WEBアプリで必要な、クッキー(cookie/_cookie)、セッション(session/_session)、クエリー引数(query)、レスポンスヘッダー(response_header)に関する述語
- HTMLの取得(html)、メール送信(sendmail)の述語
- wolの述語
- urlencode/urldecode述語
Netライブラリリファレンス
リスト・配列
リスト・配列の操作、取り出しを行います。
each (リスト・配列からの要素の取得)および各種ハッシュキーの変換(mkmap / remap / slmap)述語があります。
リスト・配列リファレンス
制御構造関連
プログラムの制御を行う述語です。
counter (ループを作る)、each (リスト・配列からの要素の取得)、exit(終了)、transfer(別プログラムに制御を移す)等があります。
制御構造関連リファレンス
その他のカテゴリ
内部で使用している組込み述語
Powered by ADP.