SQLite プログラミング

SQLite を使うコードをちょっと書いてみている。

去年度の仕事のときにハマっていたことだが、そこでは一連の処理が延々続いていて、一見つぎつぎに stdin から吸って stdout に吐くので完結しそうでいて、それでいて微妙に、何段も前の処理に使ったパラメータを使い回さなきゃいけなかったりして、かといって複数の出力をうまいこと bundle する方法も思いつかず結局細かいことはノートに書いて、それを読みながら手入力で頑張っていたのだった。メンドくっさー

そのときに、ふと SQLite が使えるな、とは思ったのは、昔 web アプリをやっていた頃、解析のログを全部 DB に突っ込むというのをやっていたからで、この時は動くシステムは作らなかったが、結果とログと入力パラメータが全部 DB に入っているのは結構便利かも、という気がした。欲を言えばプログラム自体や読み込んでいるファイルの version control もやって、いつでも過去の結果が再現できるのが理想だが、そこまでのシステムはしんどいし。

当時は DB = oracle だったので、個人的にどうこうという展望はなかったけど、 SQLite なら standalone でやれるんだよね。ファイル消されたら死ぬけど。

という訳で、暇ができたのでちょっとコード書いてたんだが、ポピュラーなライブラリの割には日本語の情報をほとんど見かけないな

しばらく悩んだが、 SQL 文を作っておいて prepare して、パラメータのとこだけ bind で代入して step で回せばいいようだ。 insert しかしなかったので、それしか判らん。あ、 merge into って oracle にしかなかったのか

参考:

SQLite バージョン 3 の C/C++ インターフェース - Third impact
API の一覧。
SQLite が認識する SQL - Third impact
SQLite の SQL 文
mac_prog: sqlite3_prepare の真価
これを参考にした
MASATOの開発日記: SQLite性能評価その3
SQLiteで組み込みDB体験(2007年版):CodeZine
例題
c/c++でsqliteを使う方法 - ぴょぴょぴょ? - Linuxとかプログラミング ...

とりあえず insert するコードはできた。C++ の自分用クラスにしといた。 select の方も作らんとな…。


20:43:00 - 04.04.08 - kuroyagi - その他雑記 - 5446x