Storage
デバイスのストレージにアクセスします。
この API は W3C Web SQL Database Specification と W3C Web Storage API Specification に基づいて設計されています。
既にW3Cの実装がされているデバイスについては PhoneGapの実装の変わりにビルトインのサポートが使用されます。 W3Cのサポートが実装されていないデバイスに関しても、 PhoneGapの実装はW3Cの仕様と適合します。
メソッド
引数
オブジェクト
openDatabase
Database
オブジェクトを新規作成します。
var dbShell = window.openDatabase(name, version, display_name, size);
概要
このメソッドは SQLite データベースを新規作成し、データベースオブジェクトを返します。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 6.0 以上)
- iPhone
使用例
var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
詳細な使用例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>連絡先の使用例</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// PhoneGapの読み込みを待機
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// PhoneGap準備完了
//
function onDeviceReady() {
var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
}
</script>
</head>
<body onload="onLoad()">
<h1>サンプル</h1>
<p>データベースを開く</p>
</body>
</html>
name
データベース名です。
version
データベースのバージョンです。
display_name
実際に表示されるデータベース名です。
size
データベースのサイズです。バイト単位で表されます。
Database
データベースの操作に必要なメソッドを提供します。
メソッド
- transaction: データベース処理を実行します。
- changeVersion: スクリプトがデータベースのバージョンを自動的に確認し、スキーマのアップデートと同時にバージョンを変更します。
詳細
window.openDatabase()
呼び出し時に返されるオブジェクトです。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 6.0 以上)
- iPhone
Transaction の使用例
function populateDB(tx) {
tx.executeSql('DROP TABLE DEMO IF EXISTS');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
function errorCB(err) {
alert("エラーが発生しました: "+err.code);
}
function successCB() {
alert("成功しました。");
}
var db = window.openDatabase("Database", "1.0", "PhoneGapデモ", 200000);
db.transaction(populateDB, errorCB, successCB);
Change Version の使用例
var db = window.openDatabase("Database", "1.0", "PhoneGapデモ", 200000);
db.changeVersion("1.0", "1.1");
詳細な使用例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>連絡先の使用例</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// PhoneGapの読み込みを待機
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// PhoneGap準備完了
//
function onDeviceReady() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}
// データベースの操作
//
function populateDB(tx) {
tx.executeSql('DROP TABLE DEMO IF EXISTS');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
// トランザクション失敗時のコールバック
//
function errorCB(tx, err) {
alert("エラーが発生しました: "+err);
}
// トランザクション成功時のコールバック
//
function successCB() {
alert("成功しました。");
}
</script>
</head>
<body onload="onLoad()">
<h1>サンプル</h1>
<p>データベース</p>
</body>
</html>
Android 1.X に関する注意点
- changeVersion: このメソッドはAndroid 1.X デバイスではサポートされていません。
SQLTransaction
データベースに対してSQL文を実行するメソッドを持ちます。
メソッド
- executeSql: SQL文を実行します。
詳細
Database オブジェクトの Transaction メソッドを呼ぶ際、それに対応するコールバック関数が SQLTransaction オブジェクトと一緒に呼び出されます。 データベーストランザクションを作成するには、excuteSqlメソッドを複数回使用してください。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 6.0 以上)
- iPhone
Execute SQL の例
function populateDB(tx) {
tx.executeSql('DROP TABLE DEMO IF EXISTS');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
function errorCB(err) {
alert("エラーが発生しました: "+err);
}
function successCB() {
alert("成功しました。");
}
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
詳細な使用例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>連絡先の使用例</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// PhoneGapの読み込みを待機
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// PhoneGap準備完了
//
function onDeviceReady() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}
// データベースの操作
//
function populateDB(tx) {
tx.executeSql('DROP TABLE DEMO IF EXISTS');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
// 失敗時のコールバック
//
function errorCB(err) {
alert("エラーが発生しました: "+err);
}
// 成功時のコールバック
//
function successCB() {
alert("成功しました");
}
</script>
</head>
<body onload="onLoad()">
<h1>サンプル</h1>
<p>SQLのデータ処理</p>
</body>
</html>
SQLResultSet
SQLTransaction の executeSql メソッドが呼ばれるときに SQLResultSet とともにコールバックを呼び出します。
プロパティ
- insertId: SQL命令文によりデータベースに挿入された行の行番号です。
- rowAffected: SQL 命令文によって変更された行の数です。 命令文がデータベースに変更を加えない場合は0を返します。
- rows: 返された結果を表す SQLResultSetRowList オブジェクトです。 行が返されなかった場合、オブジェクトは空になります。
詳細
SQLTransaction executeSql メソッドが呼び出されると、コールバックがSQLResultSetオブジェクトとともに呼び出されます。
SQLResultSetオブジェクトは insertId
、rowAffected
、そして SQLResultSetList
という3つのプロパティーを持っています。
insertId
は SQL へのinsertが成功した行の番号を返します。SQL 命令文がinsertではなかった場合、insertId
はセットされません。
rowAffected
はSQLのselectに対しては常に0を取ります。insert/updateに対しては修正された行の数を返します。
SQLResultSetList
はSQLのselectによって返されたデータを保存します。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 6.0 以上)
- iPhone
SQLを実行する例
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
// insert文でないため空になります。
console.log("追加された行 = " + results.insertId);
// select文が挿入されているため0になります。
console.log("挿入された行 = " + results.rowAffected);
// select文によって返される行数
console.log("検索された行 = " + results.rows.length);
}
function errorCB(err) {
alert("エラーを処理します: "+err.code);
}
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);
詳細な使用例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>連絡先の使用例</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// PhoneGapの読み込みを待機
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// データベースの操作
//
function populateDB(tx) {
tx.executeSql('DROP TABLE DEMO IF EXISTS');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
// データベースに問い合わせ
//
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
// 成功時のコールバック
//
function querySuccess(tx, results) {
// insert文でないため空になります。
console.log("追加された行 = " + results.insertId);
// select文が挿入されているため0になります。
console.log("挿入された行 = " + results.rowAffected);
// select文によって返される行数
console.log("検索された行 = " + results.rows.length);
}
// トランザクション失敗時のコールバック
//
function errorCB(err) {
console.log("エラーが発生しました: "+err.code);
}
// トランザクション成功時のコールバック
//
function successCB() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);
}
// PhoneGapの準備完了
//
function onDeviceReady() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}
</script>
</head>
<body onload="onLoad()">
<h1>サンプル</h1>
<p>データベース</p>
</body>
</html>
SQLResultSetList
SQLへの問い合わせから返される、行を持った SQLResultSet のプロパティーのうちのひとつです。
プロパティ
- length: SQLへの問い合わせによって返される行の総数です。
メソッド
- item: 指定された行をJavaScript オブジェクトとして返します。
詳細
SQLResultSetList
は SQL select 文によって返されたデータを保有しています。
このオブジェクトは select 文に返された行の数を表す、length プロパティーを持っています。
行のデータを取得するためには行番号を指定した item
メソッドを使用してください。
item
メソッドは JavaScript オブジェクトを返します。これにより返されるオブジェクトは select 文によって実行されたデータベースのカラムをプロパティとして持っています。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 6.0 以上)
- iPhone
SQLを実行する例
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
var len = results.rows.length;
console.log("DEMO table: " + len + " の行が見つかりました。");
for (var i=0; i<len; i++){
console.log("行 = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data);
}
}
function errorCB(err) {
alert("エラーを処理します: "+err.code);
}
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);
詳細な使用例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>連絡先の使用例</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// PhoneGapの読み込みを待機
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// データベースの操作
//
function populateDB(tx) {
tx.executeSql('DROP TABLE DEMO IF EXISTS');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
// データベースへ問い合わせ
//
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
// 成功時のコールバック
//
function querySuccess(tx, results) {
var len = results.rows.length;
console.log("DEMO table: " + len + " の行が見つかりました。");
for (var i=0; i<len; i++){
console.log("行 = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data);
}
}
// トランザクション失敗時のコールバック
//
function errorCB(err) {
console.log("Error processing SQL: "+err.code);
}
// トランザクション成功時のコールバック
//
function successCB() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);
}
// PhoneGap準備完了
//
function onDeviceReady() {
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}
</script>
</head>
<body onload="onLoad()">
<h1>サンプル</h1>
<p>データベース</p>
</body>
</html>
SQLError
エラー発生時に投げられる SQLError
オブジェクトです。
プロパティ
- code: 下記のあらかじめ定義されたエラーコードが格納されます。
- message: エラーの詳細メッセージです。
定数
SQLError.UNKNOWN_ERR
SQLError.DATABASE_ERR
SQLError.VERSION_ERR
SQLError.TOO_LARGE_ERR
SQLError.QUOTA_ERR
SQLError.SYNTAX_ERR
SQLError.CONSTRAINT_ERR
SQLError.TIMEOUT_ERR
概要
データベース操作に関連したエラーに対して投げられる SQLError
オブジェクトです。
localStorage
W3C Storage interface (http://dev.w3.org/html5/webstorage/#the-localstorage-attribute)の操作を提供します。
var storage = window.localStorage;
メソッド
- key: キーの名前を返します。
- getItem: キーによって指定されたアイテムを返します。
- setItem: キーによって指定されたアイテムを保存します。
- removeItem: キーによって指定されたアイテムを削除します。
- clear: 全てのキーとアイテムを削除します。
詳細
localStorage はキーと値のペアでデータを管理します。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 6.0 以上)
- iPhone
キーを取得する例
var keyName = window.localStorage.key(0);
項目を登録する例
window.localStorage.setItem("key", "value");
項目を取得する例
var value = window.localStorage.getItem("key");
アイテムを削除する例
window.localStorage.removeItem("key");
ローカルストレージをクリアする例
window.localStorage.clear();
詳細な使用例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>連絡先の使用例</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// PhoneGapの読み込みを待機
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// PhoneGap準備完了
//
function onDeviceReady() {
window.localStorage.setItem("key", "value");
var keyname = window.localStorage.key(i);
// keyname の値は "key" となります。
var value = window.localStorage.getItem("key");
// value の値は "value" となります。
window.localStorage.removeItem("key");
window.localStorage.setItem("key2", "value2");
window.localStorage.clear();
// localStorage は空です。
}
</script>
</head>
<body onload="onLoad()">
<h1>サンプル</h1>
<p>ローカルストレージのサンプル</p>
</body>
</html>