Storage

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 データベースを新規作成し、データベースオブジェクトを返します。

サポートされているプラットフォーム

使用例

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

データベースの操作に必要なメソッドを提供します。

メソッド

詳細

window.openDatabase() 呼び出し時に返されるオブジェクトです。

サポートされているプラットフォーム

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 に関する注意点


SQLTransaction

データベースに対してSQL文を実行するメソッドを持ちます。

メソッド

詳細

Database オブジェクトの Transaction メソッドを呼ぶ際、それに対応するコールバック関数が SQLTransaction オブジェクトと一緒に呼び出されます。 データベーストランザクションを作成するには、excuteSqlメソッドを複数回使用してください。

サポートされているプラットフォーム

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 とともにコールバックを呼び出します。

プロパティ

詳細

SQLTransaction executeSql メソッドが呼び出されると、コールバックがSQLResultSetオブジェクトとともに呼び出されます。 SQLResultSetオブジェクトは insertIdrowAffected 、そして SQLResultSetList という3つのプロパティーを持っています。 insertId は SQL へのinsertが成功した行の番号を返します。SQL 命令文がinsertではなかった場合、insertId はセットされません。 rowAffected はSQLのselectに対しては常に0を取ります。insert/updateに対しては修正された行の数を返します。 SQLResultSetList はSQLのselectによって返されたデータを保存します。

サポートされているプラットフォーム

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 のプロパティーのうちのひとつです。

プロパティ

メソッド

詳細

SQLResultSetList は SQL select 文によって返されたデータを保有しています。 このオブジェクトは select 文に返された行の数を表す、length プロパティーを持っています。 行のデータを取得するためには行番号を指定した item メソッドを使用してください。 item メソッドは JavaScript オブジェクトを返します。これにより返されるオブジェクトは select 文によって実行されたデータベースのカラムをプロパティとして持っています。

サポートされているプラットフォーム

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 オブジェクトです。

プロパティ

定数

概要

データベース操作に関連したエラーに対して投げられる SQLError オブジェクトです。


localStorage

W3C Storage interface (http://dev.w3.org/html5/webstorage/#the-localstorage-attribute)の操作を提供します。

var storage = window.localStorage;

メソッド

詳細

localStorage はキーと値のペアでデータを管理します。

サポートされているプラットフォーム

キーを取得する例

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>