実際のコードはこんな感じで書ける。
(import (dbi)) ;; とりあえず組み込みでODBCをサポート。 ;; 他に標準になっているデータベースアクセス方式があったらサポートするかも。 (define conn (dbi-connect "dbi:odbc:server=XE" :username "username" :password "password")) ;; プレースホルダーに直接値を渡せる (let ((query (dbi-prepare conn "select * from a_table where id >= ?" 10000))) ;; (dbi-bind-parameter query 1 10000) ;; こう書いてもOK (dbi-execute! query) ;; 実行自体は何も返さない。 (print (dbi-fetch-all! query))) ;; dbi-fetch!なら一行返す。なければ#f (dbi-close conn)直接ODBCのAPIを叩くよりははるかに楽。SQLのDATE型とかは(DBDの実装依存なので、組み込みのODBCではだけど)srfi-19の日付型に変換して、BLOBや長いテキストはポートで返す(現状の実装だと結局全部読み込むのであまり意味はないが、そうするべきという意味合いで)。
なんとなく、仕事で使うような機能はほぼそろいつつあるなぁ。
No comments:
Post a Comment