HTML 5のローカルデータベース機能: SQLの実行結果からデータを取り出す

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

SQLResultSetオブジェクトからデータを取り出す

 executeSql()メソッドを使ってSELECT命令などを実行すると、その結果はSQLResultSetオブジェクトとして第3引数に指定したSQLトランザクション・コールバック関数に渡される。SQLResultSetにはrowsというプロパティが定義されており、ここに行のデータが格納されている。

 rowsの実体はSQLResultSetRowListというインタフェースのオブジェクトである。このオブジェクトは結果の行の数を表すlengthプロパティと、特定の行のデータを取得するためのitem()関数を持っている。item()関数は引数に指定された数値の次の行のデータをDOMObjectとして返す。例えばリスト1のようにした場合、rowには6行目のデータが返ってくる。

リスト1 それぞれの行のデータはgetItem()関数で取得する

var row = rs.rows.item(5);  // rsはSQLResultSetオブジェクト

 行データには各カラムの値がプロパティとして格納されている。各カラムの値はカラム名に関連付けられているので、リスト2のようにすれば取得できる。

リスト2 カラムのデータはカラム名のプロパティになっている

var data = row.カラム名;

 リスト3はローカルDBのAddressListテーブルに格納されたデータを取得するコード例である。nameとaddressというカラムの値をそれぞれ取り出している。

リスト3 AddressListテーブルからnameとaddressの値を取得する例

tx.executeSql('SELECT * FROM AddressList', [], 
    function(tx, rs) {
      for(var i = 0; i < rs.rows.length; i++) {
        // 行データを取得
        var row = rs.rows.getItem(i);

        // 各カラムの値を取得
        var name = row.name;
        var address = row.address;
      }
    });

 ここまで、ローカルDBにアクセスしてSQLを実行し結果を取り出す方法を解説してきたので、次回はこれをひとつにまとめたサンプルを紹介しよう。

  • コメント(1件)
#1 anonymous   2010-04-13 21:24:30
リスト3 AddressListテーブルからnameとaddressの値を取得する例の下記の部分が誤っております。

// 行データを取得
var row = rs.rows.getItem(i); → var row = rs.rows.item(i);
  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]