Blog
リファレンス(仕様詳細) » HTML5 API:WebSQLDBラッパー

HTML5 API:WebSQLDBラッパー

Last modified by mtakeuchi on 2012/10/17, 10:12

概要

  • 単一のテーブルに対して簡単にCRUD操作が行えます。
  • Method chainなインターフェースで、whereやorderByを条件指定やSQLの実行を操作します。

このAPIは、h5.api.sqldbにアクセスすることで使用できます。

API

h5.api.sqldb

メンバ戻り値の型説明
isSupportedbooleanブラウザSQLDBをサポートしているか。
open(String name, String version, String displayName, Number estimatedSize)DatabaseWrapperデータベースに接続します

サンプルコード

var db = h5.api.sqldb.open('testdb1', '1', 'testdb1', 2 * 1024 * 1024);  

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()

var del = db.del('TABLE1');  

insert()

// 1件登録  
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()

var sql = db.sql('INSERT INTO TABLE1(id, name, age) VALUES(? ? ?)', [1, '鈴木', '21']);  

update()

var update = db.update('TABLE1' {age:'', age:22});  

transaction()

var transaction = db.transaction();  

Del

メンバ戻り値の型説明
execute()Promiseこのオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。
where(Object/String whereObj)DelWHERE句を設定します。

Insert

メンバ戻り値の型説明
execute()Promiseこのオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。

Select

メンバ戻り値の型説明
execute()Promiseこのオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。
orderBy(Object/String orderByObj)SelectORDER BY句を設定します。
where(Object/String whereObj)SelectWHERE句を設定します。

Update

メンバ戻り値の型説明
execute()Promiseこのオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。
where(Object/String whereObj)UpdateWHERE句を設定します。

Sql

メンバ戻り値の型説明
execute()Promiseこのオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。

Transaction

メンバ戻り値の型説明
execute()Promiseこのオブジェクトに設定された情報からSQLステートメントとパラメータを生成し、SQLを実行します。
add(Del/Insert/Select/Update/Sql task)Transaction1トランザクションで処理したい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 insert = db.insert('TABLE1' {id:1, name:'鈴木', age:21});  
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 select = db.select('TABLE1', '*');  
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.sql('CREATE TABLE TABLE1 (col1, col2, col3)').execute().done(function(rs) {  
     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.sql('CREATE TABLE TABLE1 (col1, col2, col3)').execute().progress(function(rs, tx) {  
     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変更されたレコード件数
Sqlrows(検索結果を持つオブジェクト)・insertId(登録ID)・rowsAffected(変更されたレコード件数)のプロパティをもつオブジェクト
Transactionadd()で追加したSQLの実行結果を全て持つ配列

Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.