2013年11月22日金曜日

Titanium用のSQLiteクエリビルダー、sqliterをアップデートしてみた(エスケープ処理の追加)

  • このエントリーをはてなブックマークに追加

以前作ったTitaniumでSQLiteを簡単に扱うためのライブラリ(クエリビルダー)をバージョンアップした。
今回バージョンアップしたところは以下の2点。

・クオーテーションやダブルクオーテーションの処理(エスケープ処理)
・updateをする際のvalue値に0が入らない問題

ダウンロードはこちらから

ということで詳しくは下記に。

■クオーテーションやダブルクオーテーションの処理(エスケープ処理)

SQL文中に「'」や「"」が入っているとエラーが吐き出されてしまう問題を対処した。
ちなみに豆知識になるけど、SQLiteではダブルクオーテーションやシングルクオーテーションは2個重ねる必要があったりする。

//'aiueo'というのを探したい
SELECT * FROM tbl WHERE name = "''aiueo''";

//"aiueo"というのを探したい
SELECT * FROM tbl WHERE name="""aiueo""";


■updateをする際のvalue値に0が入らない問題

update文をsqliterで書くとなると下記のようになる。

//まとめて要素を挿入する場合
sqlite.open(function(db){
  db.update("tbl").set({
    name:"hoge",
    year:2000
  }).where("id","=",1).execute();
});

//1つだけ要素を挿入する場合
sqlite.open(function(db){
  db.update("tbl").value("flg",0).where("id","=",1).execute();
});
で、削除機能を実装するといった場合には、論理削除と物理削除があるけれど、
基本的には論理削除を用いてやるのが妥当だったりする。
その際に0を挿入するわけなんだけど、この0が内部処理で入らなくなってしまっていた。
第二引数の_valueをチェックする部分で、!_valueとやっていたために、0が引っかかっていた。
なのでこちらの部分を_value == undefinedとして上げる事で解決。


自分で作っておきながら、これは中々便利なものであるので、しっかりとバージョンアップしていこうと思う。
まだ未実装だけど、「select_array」・「insertの第二引数を有効にする」・「updateとかでも返り値をちゃんと返す」などなど、
そういった諸々の機能を実装していきたいなと。

Adsense