Storage

Storage

デバイスのストレージにアクセスする機能を提供します。

この API は W3C Web SQL Database 仕様書 と W3C Web Storage API 仕様書 をベースとしています。いくつかのデバイスではすでにこの機能の実装を提供しています。これらについては、 Cordova の実装ではなくビルトインのサポートが実行されます。ストレージのサポートがされてないデバイスについては、 Cordova の実装によって W3C の仕様に沿った機能が提供されます。

メソッド

引数

オブジェクト

パーミッション

Android

app/res/xml/plugins.xml

<plugin name="Storage" value="org.apache.cordova.Storage" />

Bada

パーミッションの設定は必要ありません。

BlackBerry WebWorks

www/config.xml

<feature id="blackberry.widgetcache" required="true" version="1.0.0.0" />

iOS

パーミッションの設定は必要ありません。

webOS

パーミッションの設定は必要ありません。

Windows Phone

パーミッションの設定は必要ありません。

openDatabase

Database オブジェクトを新規作成します。

var dbShell = window.openDatabase(database_name, database_version, database_displayname, database_size);

概要

window.openDatabase メソッドは新しい Database オブジェクトを返します。

このメソッドは SQLite のデータベースを新規作成し、 Database オブジェクトを返します。 Database オブジェクトは、データを操作するために使います。

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

使用例

var db = window.openDatabase("test", "1.0", "Test DB", 1000000);

詳細な使用例

<!DOCTYPE html>
<html>
  <head>
    <title>Storage の使用例</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Cordova の読み込み完了まで待機
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova 準備完了
    //
    function onDeviceReady() {
        var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
    }

    </script>
  </head>
  <body>
    <h1>使用例</h1>
    <p>データベースを開く</p>
  </body>
</html>

database_name

データベース名です。


database_version

データベースのバージョンです。


database_displayname

実際に表示されるデータベース名です。


database_size

データベースのサイズです。バイト単位で表されます。


Database

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

メソッド

詳細

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

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

Transaction の例

function populateDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    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("SQL実行中にエラーが発生しました: "+err.code);
}

function successCB() {
    alert("成功しました。");
}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);

Change Version の例

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.changeVersion("1.0", "1.1");

詳細な使用例

<!DOCTYPE html>
<html>
  <head>
    <title>Storage の使用例</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Cordova の読み込み完了まで待機
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova 準備完了
    //
    function onDeviceReady() {
        var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
        db.transaction(populateDB, errorCB, successCB);
    }

    // データベースを操作 
    //
    function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        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("SQL実行中にエラーが発生しました: "+err);
    }

    // トランザクション成功時のコールバック
    //
    function successCB() {
        alert("成功しました。");
    }

    </script>
  </head>
  <body>
    <h1>Example</h1>
    <p>Database</p>
  </body>
</html>

Android 1.X に関する注意点


SQLTransaction

データベースに対して SQL を実行するためのメソッドを提供します。

メソッド

詳細

Database オブジェクトの transaction メソッドを呼ぶとき、それに対応するコールバック関数が SQLTransaction オブジェクトと一緒に呼び出されます。 executeSql メソッドを複数回使用することで、データベーストランザクションを作成できます。

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

Execute SQL の例

function populateDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    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("SQL 実行中にエラーが発生しました: "+err);
}

function successCB() {
    alert("成功しました。");
}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);

詳細な使用例

<!DOCTYPE html>
<html>
  <head>
    <title>Storage の使用例</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Cordova の読み込み完了まで待機
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova 準備完了
    //
    function onDeviceReady() {
        var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
        db.transaction(populateDB, errorCB, successCB);
    }

    // データベースを操作
    //
    function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        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("SQL 実行中にエラーが発生しました: "+err);
    }

    // トランザクション成功時のコールバック
    //
    function successCB() {
        alert("成功しました。");
    }

    </script>
  </head>
  <body>
    <h1>使用例</h1>
    <p>SQLトランザクション</p>
  </body>
</html>

SQLResultSet

SQLTransaction の executeSql メソッドが呼ばれるとき、 SQLResultSet とともにコールバック関数が呼び出されます。

プロパティー

詳細

SQLTransaction の executeSql メソッドが呼び出されるとき、 SQLResultSet オブジェクトとともにコールバック関数が呼び出されます。この結果オブジェクトは3つのプロパティーを持っています。1つめは insertId で、 SQL の insert 文が成功した行の番号を返します。もし SQL 文が insert 文では無かった場合、 insertId はセットされません。2つめの rowsAffected は SQL の select 文に対しては常に0を返します。 insert もしくは update 文に対しては、修正された行数を返します。最後の SQLResultSetList は、 SQL の select 文によって返されたデータを保持します。

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

Execute SQL の例

function queryDB(tx) {
    tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}

function querySuccess(tx, results) {
    console.log("検索された行 = " + results.rows.length);
    // select 文のため、 rowsAffected は0となり、 true となります
    if (!results.rowsAffected) {
        console.log('どの行も変更されていません。');
        return false;
    }
    // insert 文では、このプロパティーは挿入された最終行を表します
    console.log("挿入された行 = " + results.insertId);
}

function errorCB(err) {
    alert("SQL 実行中にエラーが発生しました: "+err.code);
}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);

詳細な使用例

<!DOCTYPE html>
<html>
  <head>
    <title>Storage の使用例</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Cordova の読み込み完了まで待機
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // データベースを操作
    //
    function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        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) {
        console.log("検索された行 = " + results.rows.length);
        // select 文のため、 rowsAffected は0となり、 true となります
        if (!results.rowsAffected) {
            console.log('どの行も変更されていません。');
            return false;
        }
        // insert 文では、このプロパティーは挿入された最終行を表します
        console.log("挿入された行 = " + results.insertId);
    }

    // トランザクション失敗時のコールバック
    //
    function successCB() {
        var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
        db.transaction(queryDB, errorCB);
    }

    // Cordova 準備完了
    //
    function onDeviceReady() {
        var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
        db.transaction(populateDB, errorCB, successCB);
    }

    </script>
  </head>
  <body>
    <h1>使用例</h1>
    <p>データベース</p>
  </body>
</html>

SQLResultSetList

SQL 問い合わせから返される行を保持した SQLResultSet のプロパティーのうちの1つです。

プロパティー

メソッド

詳細

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

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

Execute 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("SQL 実行中にエラーが発生しました: "+err.code);
}

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);

詳細な使用例

<!DOCTYPE html>
<html>
  <head>
    <title>Storage の使用例</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Cordova の読み込み完了まで待機
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // データベースを操作
    //
    function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        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("SQL 実行中にエラーが発生しました: "+err.code);
    }

    // トランザクション成功時のコールバック
    //
    function successCB() {
        var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
        db.transaction(queryDB, errorCB);
    }

    // Cordova 準備完了
    //
    function onDeviceReady() {
        var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
        db.transaction(populateDB, errorCB, successCB);
    }

    </script>
  </head>
  <body>
    <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 は W3C Storage interface へのインターフェースを提供します。キーと値のペアでデータを管理します。

注意: window.sessionStorage は同じインターフェースを提供しますが、アプリが起動するたびにこの値はクリアされます。

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

Key の例

var keyName = window.localStorage.key(0);

Set Item の例

window.localStorage.setItem("key", "value");

Get Item の例

var value = window.localStorage.getItem("key");
// value の値は "value"

Remove Item の例

window.localStorage.removeItem("key");

Clear の例

window.localStorage.clear();

詳細な使用例

<!DOCTYPE html>
<html>
  <head>
    <title>Storage の使用例</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Cordova の読み込み完了まで待機
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // Cordova 準備完了
    //
    function onDeviceReady() {
        window.localStorage.setItem("key", "value");
        var keyname = window.localStorage.key(i);
        // key の値は "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>
    <h1>使用例</h1>
    <p>localStorage のサンプル</p>
  </body>
</html>

Windows Phone 7 に関する注意点