SQLite3へのインターフェース用クラスです。
データベースファイルのオープン〜クローズ、SQL妥当性チェック、 SQL即時実行、プリコンパイルステートメント(Prepared Statement)、 トランザクション制御、カーソル処理等をサポートします。
このプラグインをリンクすると、以下の3つのクラスを扱えるようになります。
上記のうち、SQLite3クラス以外は 明示的にクラスインスタンスを作成してはいけません。 作成しようとすると例外が発生します。
これらのクラスを使った、大まかな処理の流れを以下に示します。
// --------------------------------- // 基本 // --------------------------------- // DBインスタンス作成 var db = new SQLite3(); // データベースファイルをオープン db.open('test.db'); // ちょっとしたSQL実行にはexecuteQuery()が便利 db.executeQuery("create table foo ( a number, b varchar );"); // 開けたら閉める db.close();
// --------------------------------- // トランザクション // --------------------------------- var db = new SQLite3(); db.open('test.db'); // トランザクション開始 db.beginTrans(); db.executeQuery("insert into foo values (1, 'Hello world.');"); db.executeQuery("update foo set b = 'Hello SQLite.' where a = 1;"); // コミット db.commit(); db.close();
// --------------------------------- // プリコンパイルステートメント // --------------------------------- var db = new SQLite3(); db.open('test.db'); // SQLite3Statementクラスインスタンスを取得 var statement = db.createStatement("insert into foo values (?, ?);"); // 1つ目のカラム (a) statement.setParam(1, 5); // 2つ目のカラム (b) statement.setParam(2, 'Hello TJS.'); // SQL実行 statement.execute(); db.close();
// --------------------------------- // カーソルを使ったフェッチ // --------------------------------- var db = new SQLite3(); db.open('test.db'); var statement = db.createStatement("select * from foo;"); // SQLite3Cursorクラスインスタンスを取得 var cursor = statement.openCursor(); // シーケンシャルリード while (cursor.next()) { // 列データ取得 var a = cursor.value(0); var b = cursor.value(1); var aAsStr = cursor.value(0, tpsqString); // 強制型変換も可能 } // 開けたら閉める cursor.close(); db.close();
このプラグインをリンクすると、下記の関数が追加されます。