SQLite3へのインターフェース用クラスです。
データベースファイルのオープン〜クローズ、SQL妥当性チェック、 SQL即時実行、プリコンパイルステートメント(Prepared Statement)、 トランザクション制御、カーソル処理等をサポートします。
このプラグインをリンクすると、以下の3つのクラスを扱えるようになります。
上記のうち、SQLite3クラス以外は 明示的にクラスインスタンスを作成してはいけません。 必ず SQLite3.createStatementや SQLite3Statement.openCursorなど、所定の関数経由でインスタンスを取得してください。 これらの手続きを踏まずに作成した場合、そのインスタンスは常に閉じた状態なので、利用することはできません。
このプラグインで例外が発生した場合、関連するコネクションは即座に クローズされます。 つまり、コネクションで発生した場合はもとより、生成されたステートメントまたはカーソルで例外が発生した場合でも、親のコネクションはクローズされます ( SQLite3.onErrorCloseプロパティを参照)。
このプラグインを使った、大まかな処理の流れを以下に示します。
// --------------------------------- // 基本 // --------------------------------- // 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();
このプラグインをリンクすると、下記のメンバが追加されます。