HTML 5のローカルデータベース機能: SQLの実行結果からデータを取り出す
杉山貴章(オングス)
2008-12-22 17:00:00
HTML 5のクライアントサイド・データベースストレージに対するSQLの実行結果はSQLResultSetオブジェクトとして渡される。このオブジェクトから行およびカラムのデータを取り出す方法を紹介する。
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
- ホワイトペーパー


// 行データを取得
var row = rs.rows.getItem(i); → var row = rs.rows.item(i);