SQLite binding for Clean
というわけで、完成しました。
いまのところWindows専用だけど、ちょっとコードを修正するだけで他のOSでも動くようになるはず。
Sourceforge.netにプロジェクト申請しておいたので、準備が出来次第、そっちに登録しておきます。
急いで使ってみたいという人が、もしもいたなら(いないと思うけど)、コメントしてもらえれば、どこかに暫定的にアップします。
-
-
- -
-
こんなDBに対して、
sqlite> .schema tbl1 CREATE TABLE tbl1 (i INTEGER, r REAL, t TEXT); sqlite> select i,r,t from tbl1; 1|1.1|aaa 2|2.2|bbb 3|3.3|ccc
こんなプログラムでアクセスできます。
Start w # (c,w) = sql_open "db" w (s,c) = sql_connection_status c | s <> SQL_OK = trace (toString s +++ "\n") ({},[],w) # (mst,c) = sql_prepare "SELECT i,r,t FROM tbl1" c (nml,rsl,c) = case mst of Nothing # (st,c) = sql_connection_status c = trace (toString st +++ "\n") ({},[],c) Just st # (nml,st) = sql_column_names st (rsl,st) = each st c = sql_finalize st c = (nml,rsl,c) w = sql_close c w = (nml,rsl,w) where each st # st = sql_step st (mrs,st) = sql_column_values st = case mrs of Nothing = ([],st) Just rs # (rsl,st) = each st = ([rs:rsl],st)
実行結果は、こうなります。(整形済み)
({"i","r","t"}, [{(SQL_INT 1),(SQL_DOUBLE 1.1),(SQL_TEXT "aaa")}, {(SQL_INT 2),(SQL_DOUBLE 2.2),(SQL_TEXT "bbb")}, {(SQL_INT 3),(SQL_DOUBLE 3.3),(SQL_TEXT "ccc")}], 65536)