HTML5 API:WebSQLDBラッパー
概要
- 単一のテーブルに対して簡単にCRUD操作が行えます。
- Method chainなインターフェースで、whereやorderByを条件指定やSQLの実行を操作します。
このAPIは、h5.api.sqldbにアクセスすることで使用できます。
API
h5.api.sqldb
メンバ | 戻り値の型 | 説明 |
---|---|---|
isSupported | boolean | ブラウザSQLDBをサポートしているか。 |
open(String name, String version, String displayName, Number estimatedSize) | DatabaseWrapper | データベースに接続します |
サンプルコード
DatabaseWrapper
メンバ | 戻り値の型 | 説明 |
---|---|---|
del(String tableName, SQLTransacthionWrapper txw) | Del | 削除処理(DELETE)を行うためのオブジェクトを生成します。 |
insert(String tableName, Object/Array values, SQLTransactionWrapper txw) | Insert | 登録処理(INSERT)を行うためのオブジェクトを生成します。 |
select(String tableName, Array columns, SQLTransactionWrapper txw) | Select | 検索処理(SELECT)を行うためのオブジェクトを生成します。 |
sql(String statement, Array parameters, SQLTransactionWrapper txw) | Sql | 指定されたステートメントとパラメータから、SQLを実行するためのオブジェクトを生成します。 |
update(String tableName, Object values, SQLTransactionWrapper txw) | Update | 更新処理(UPDATE)を行うためのオブジェクトを生成します。 |
transaction(SQLTransactionWrapper txw) | Transaction | 指定された複数のSQLを同一トランザクションで実行するためのオブジェクトを生成します。 |
サンプルコード
del()
insert()
var insert = db.insert('TABLE1' {id:1, name:'鈴木', age:21});
// 複数件登録
var insert = db.insert('TABLE1' [{id:1, name:'鈴木', age:21}, {id:2, name:'田中', age:34}]);
select()
var select = db.select('TABLE1' ['id', 'age']);
// 全カラム取得
var select = db.select('TABLE1' '*');
sql()
update()
transaction()
Del
メンバ | 戻り値の型 | 説明 |
---|---|---|
execute() | Promise | このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。 |
where(Object/String whereObj) | Del | WHERE句を設定します。 |
Insert
メンバ | 戻り値の型 | 説明 |
---|---|---|
execute() | Promise | このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。 |
Select
メンバ | 戻り値の型 | 説明 |
---|---|---|
execute() | Promise | このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。 |
orderBy(Object/String orderByObj) | Select | ORDER BY句を設定します。 |
where(Object/String whereObj) | Select | WHERE句を設定します。 |
Update
メンバ | 戻り値の型 | 説明 |
---|---|---|
execute() | Promise | このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。 |
where(Object/String whereObj) | Update | WHERE句を設定します。 |
Sql
メンバ | 戻り値の型 | 説明 |
---|---|---|
execute() | Promise | このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。 |
Transaction
メンバ | 戻り値の型 | 説明 |
---|---|---|
execute() | Promise | このオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。 |
add(Del/Insert/Select/Update/Sql task) | Transaction | 1トランザクションで処理したいSQLをタスクに追加します。 |
Select/Update/Delのwhere()は、オブジェクトまたは文字列で指定します。
var select = db.select('TABLE1', '*');
select.where({id:10, age:21});
// 文字列
var select2 = db.select('TABLE1', '*');
select2.where('id = 10');
オブジェクトで指定した場合、上記コードの{id:10, age:21}はid = 10 AND age = 20と同義です。
SelectのorderBy()は、配列または文字列で指定します。
var select = db.select('TABLE1', '*');
select.orderBy(['name ASC', 'age DESC']);
// 文字列
var select2 = db.select('TABLE1', '*');
select2.orderBy('name ASC, age DESC');
Transactionのadd()は、Del/Insert/Select/Update/Sqlオブジェクトを指定します。
var select = db.select('TABLE1' ['id', 'age']);
var sql = db.sql('INSERT INTO TABLE1(id, name, age) VALUES(? ? ?)', [1, '鈴木', '21']);
var transaction = db.transaction().add(insert).add(select).add(sql);
SQLの実行と結果の取得は以下のように行います。
var promise = select.execute();
promise.done(function(rows) {
// SQL実行成功
});
promise.fail(function(rows, rows) {
// SQL実行失敗
});
使用方法
手順
以下の手順で、SQLを実行し結果を取得します。
- データベースに接続して、データベースオブジェクト(DatabaseWrapper)を取得。
- データベースオブジェクトを取得して、SQL実行オブジェクト(Sql/Insert/Select/Update/Update/Transaction)を生成。
- SQL実行オブジェクトのexecute()を実行し、Promiseオブジェクトから実行結果を取得する。
サンプルコード
- テーブル作成・レコードの追加を実行する。
別トランザクションで実行する場合
db.insert(TABLE_NAME, [{
id: 1,
name: '鈴木',
age: 31
}, {
id: 2,
name: '田中',
age: 28
}]).execute().done(function() {
alert('success');
}).fail(function(error) {
alert(error.message);
});
});
同一トランザクションで実行する場合
db.insert(TABLE_NAME, [{
id: 1,
name: '鈴木',
age: 31
}, {
id: 2,
name: '田中',
age: 28
}], tx).execute().done(function() {
alert('success');
}).fail(function(error) {
alert(error.message);
});
});
progress()のコールバックの第一引数には実行結果が、第二引数にはトランザクションが渡されます。このトランザクションオブジェクトDel/Insert/Select/Update/Sql/Transactionオブジェクトに渡してexecute()を実行します。
トランザクションのクローズ後、done()またはfail()が処理されます。トランザクションが正常に処理された場合、done()が実行されます。トランザクション処理中に例外やSQLの実行に失敗した場合は、fail()が実行されます。done()のコールバックの第一引数に実行結果が、fail()のコールバックの第一引数にはエラーオブジェクトが渡されます。
オブジェクトによって、渡される実行結果の内容が異なります。
Del | 変更されたレコード件数 |
Insert | 登録IDを持った配列 |
Select | 検索結果を持つオブジェクト |
Update | 変更されたレコード件数 |
Sql | rows(検索結果を持つオブジェクト)・insertId(登録ID)・rowsAffected(変更されたレコード件数)のプロパティをもつオブジェクト |
Transaction | add()で追加したSQLの実行結果を全て持つ配列 |