HTML 5のローカルデータベース機能: トランザクションを開始する

杉山貴章(オングス)
2008-12-18 17:00:00
  • このエントリーをはてなブックマークに追加

transaction()メソッドでSQLTransactionオブジェクトを取得

 Databaseオブジェクトが取得できたら、次に取得したDatabaseのtransaction()メソッドを呼び出してトランザクションを開始する。transaction()メソッドには引数として3つのコールバック関数を指定することができる。

  • 第1引数: トランザクション・コールバック関数
  • 第2引数: エラー・コールバック関数
  • 第3引数: サクセス・コールバック関数

 トランザクション・コールバック関数には正常にトランザクションが開始できた場合の通常処理を記述する。この関数には引数としてSQLTransactionオブジェクトがひとつ渡される。このSQLTransactionオブジェクトを用いてSQLの実行などを行うことができる。

 トランザクションの実行中に何らかのエラーが発生した場合、エラー・コールバック関数が指定されていればそれが呼び出される。エラー・コールバック関数にはエラー情報を持ったSQLErrorオブジェクトが渡される。サクセス・コールバック関数はトランザクションが正常にコミットされた場合に呼び出される関数である。トランザクション・コールバック関数は非同期に実行されるため、必ずトランザクションが終了した後に実行したい処理はサクセス・コールバック関数に記述する。

 したがって、transaction()メソッドを実行する際の記述はリスト1のようになる。第1引数以外は省略可能。

リスト1 transaction()メソッドでトランザクションを開始

db.transaction(function(tx) {
      // トランザクション処理 
    }, 
    function(error) { 
      // エラー処理
    }, 
    function() { 
      // コミット成功時の事後処理
    });

 Databaseオブジェクトにはもうひとつ、changeVersion()というメソッドも用意されている。これはデータベースのバージョン名を変更するためのもので、第1引数に古いバージョン名、第2引数に新しいバージョン名を指定する。第3から第5引数は、transction()の第1から第3引数と同様になる。リスト2のような感じだ。

リスト2 changeVersion()でデータベースのバージョン名を変更

db.changeVersion("1.0", "2.0", 
    function(tx) { ... }, function(error) { ... }, function() { ... });

 次回は渡されたSQLTransactionオブジェクトを使ってSQLを実行する方法を紹介する。

  • コメント(2件)
#1 anonymous   2010-03-30 02:01:35
taransactionメソッドって、transactionの誤記ですよね。
#2 builder   2010-03-30 22:40:16
#1さま

builder編集部です。
ご指摘のとおりtaransactionはtransactionの誤記でしたので、修正いたしました。
今後ともbuilderを宜しくお願い致します。
  • 新着記事
  • 特集
  • ブログ