phonegap sqlite数据库:语句回调引发异常

时间:2015-01-09 07:52:34

标签: ajax database sqlite cordova

我有这个奇怪的"语句回调引发异常或错误没有返回false"

它只是一个简单的数据库示例。 我的代码在github上: https://github.com/prantikv/phonegapDBdemo

请阅读代码中的注释,它解释了所有内容。

我怀疑问题出在数据库的ajax回调中。 如果这是真的,我怎么能让ajax回调等待sql-lite / phonegap中的数据?

function formSent(){//fired when form is submited
  alert("formSent called");
 db.transaction(queryDB, errorTrans);
 return false;
}
function errorTrans(err){ //error for formsent
alert("formsent "+err.message+"|"+err.code);//error is generated here
}


function createSuccess(){//just alerts on success
alert("DB Created");
}

function populateDB(tx) {//transaction obj is passed. Table Created not populated
  alert("populateDB called");
   tx.executeSql('CREATE TABLE IF NOT EXISTS myDB (id , data)');
}

function onDeviceReady(){
 db= window.openDatabase("Database", "1.0", "Display Name", 4*1024*1024);
 db.transaction(populateDB, createERR, createSuccess);

}
function createERR(err){//error for create
alert("Create "+err.message);

}

AM我应该为每个数据库回调添加return false.if yes然后返回哪个布尔值?

phonegap doc示例没有http://docs.phonegap.com/en/2.2.0/cordova_storage_storage.md.html#Database

1 个答案:

答案 0 :(得分:4)

错误消息通常不是因为SQL,而是在执行回调时发生的异常。所以你最有可能发生JS错误。

我找到了

tx.executeSql('INSERT INTO myDB VALUES (?,?)', [username,email], insertSuccess, errorInsert);

index.js 47 行。在 VALUES 之前缺少(id,data)。这会导致下一个SQL调用

tx.executeSql('SELECT * FROM myDB', [], querySuccess, errorSelect);

失败。修复此问题,然后重试。