●AIRのSQLiteでcount取ったりでちょっとはまる。
AIRでSQLiteを使っていたのですが、微妙にはまったところが。
SQLを実行した結果がオブジェクトになって帰ってくるのですが、この中身がどう入ってるのかわからなくなります。
たとえば
SELECT count(*) FROM database;
と実行すれば普通にカウントしてくれるのですが、これが帰ってくるオブジェクト内には
rsArray[0]["count(*)"]
※rsArrayはSQLResultのdataの中身
というような形の名前で保持されて帰ってきます。
なんとなくいただけないので、
SELECT count(*) AS count FROM database;
とか名前をきちんとつけてあげて
rsArray[0].count
というように取得するのが正しいのかなと。
なんとなく配列で帰ってくるような取得方法もほしかったなぁ・・。
あと、返ってくる配列は中身が無かった場合、0個の配列ではなくnullになります。
なのできちんとnull判定が必要となります。
Hibernate的なくるむものを自作してきちんと管理しとかないと思わぬところでnullで落ちたりしそうです。
あと、ローカルにDBファイルが置かれるので、思わぬところでデータの構造が違ったりすることを考えておかないとSQLが実行できないとアラートが出てしまいます。
try catchできっちり実行できなかった場合の処理も書かないとあとで痛い目見そうです。
でも毎回書き込みの度に型チェックするのもばからしいし・・。ここんとこ効率よく解決する必要がありますね。
割り切ってしまえばいいですが。
ちなみにSQLiteの情報をGUIで見るツールを。
SQLite Database Browser
http://sqlitebrowser.sourceforge.net/
ただし、これで開いてるとAIRからアクセスした時にLockされてるから書き込めないといわれるので1回づつ閉じないといけないという問題が・・。
SQLite ControlCenter
http://www.takke.jp/soft/sqliteccj.html
こっちで開いててもLockされない気がします。
ただ、ちょこちょこ叩いてると不意に落ちることが。