1

phonegap api (http://docs.phonegap.com/phonegap_storage_storage.md.html#Database) から適応させた次の一連の機能があります。

function onDeviceReady() {
         //Phonegap is ready. Open up the database and fill with data
        //
        var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
        db.transaction(populateDB, errorCB, successCB);

}


    // Transaction success callback
    //
    function successCB() {
        //Database opened succesfully - now choose the database again
        var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
        //Execute an SQL transaction against it. The successful results of
        //this transaction will be in querySuccess function below
        db.transaction(queryDB, errorCB);
    }

    // Transaction error callback
    //
    function errorCB(err) {
        console.log("Error processing SQL: "+err.code);
    }

    // Populate the database 
    //
    function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS PAGES');
        tx.executeSql('CREATE TABLE IF NOT EXISTS PAGES (id unique, data)');
        tx.executeSql('INSERT INTO PAGES (id, data) VALUES (1, "First  page")');
        tx.executeSql('INSERT INTO PAGES (id, data) VALUES (2, "Second  page")');
    }

    // Query the database
    //
    function queryDB(tx) {
        tx.executeSql('SELECT * FROM PAGES', [], querySuccess, errorCB);
    }


    // Query the success callback
    //
    function querySuccess(tx, results) {
        var len = results.rows.length;
        alert("DEMO table: " + len + " rows found.");
        for (var i=0; i<len; i++){
            alert("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
        }
    }

それを見て。アプリが読み込まれるたびにデータベースが作成されると言うのは正しいですか? それは私には意味がありませんが、おそらくこれが唯一の方法ですか?間違ってコーディングしていない限り

4

1 に答える 1

0

open呼び出しのすぐ下でpopulateメソッドを呼び出すのではなく、イベントリスナーをdbのloadイベントにアタッチします。

var db = null;

 function openDB() {db = ... };

.
.
.

 if (db != null)
         addEventListener('load', loaded, false);

次に、db.loadイベントのイベントハンドラーに初期データをデータベースに入力します。

于 2011-08-27T11:31:12.807 に答える