Lispy Days

趣味で Lisp な日々 (index) (weblog) (view) (edit) (help)

SQLite binding for CLISP

お手軽にデータベースが使える SQLite の CLISP-binding を作り始めてみた。CLISP の FFI はあまり良く知らないので勉強を兼ねて。

[1]> (load "sqlite")
;; Loading file /home/lambda/commonlisp/user/sqlite.lisp ...
;; Loaded file /home/lambda/commonlisp/user/sqlite.lisp
T
[2]> (use-package :sqlite)
T
[3]> (connect :database "sample.db")
#<FOREIGN-ADDRESS #x08192A00>
[4]> (sql "CREATE TABLE Sample(id NOT NULL, val NOT NULL);")
:SQLITE-OK
[5]> (dotimes (i 100) (sql (format nil "INSERT INTO Sample VALUES(~A, ~A);" i (* i i))))
NIL
[6]> (sql "SELECT * FROM Sample LIMIT 10;")
(("0" "0") ("1" "1") ("2" "4") ("3" "9") ("4" "16")
 ("5" "25") ("6" "36") ("7" "49") ("8" "64") ("9" "81")) ;
("id" "val")
[7]> 

…が、探せば既に誰か作ってそうな気がしてきた。ちょっと調査してみよう。

http://members.optusnet.com.au/apicard/ に LispWorks 用インターフェースを発見。CLISP 用のは無いのかなぁ?

という順番で作りたい。が、UFFI が使える環境なら CL-SQL があるしなぁ…。