このサンプルコードをデバイスで実行しようとすると、「DeviceReady!」しか返されません。残りのメッセージを警告しなかったため、db.transactionを実行していないようです。しかし、Webブラウザーで実行しようとすると、すべてのアラートとデータベースの結果がコンソールログに表示されます。助けてください。何が悪いのか本当にわかりません。前もって感謝します!
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady(), false);
// Populate the database
//
function populateDB(tx) {
alert("Populate DB!");
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")');
}
// Query the database
//
function queryDB(tx) {
alert("Database Query!");
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
// Query the success callback
//
function querySuccess(tx, results) {
alert("Success!");
var len = results.rows.length;
console.log("DEMO table: " + len + " rows found.");
for (var i=0; i<len; i++){
console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data);
}
}
// Transaction error callback
//
function errorCB(err) {
alert("Error Occured!");
console.log("Error processing SQL: "+err.code);
}
// Transaction success callback
//
function successCB() {
alert("Open Database!");
db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);
}
// Cordova is ready
//
function onDeviceReady() {
alert("Device Ready!");
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}