executeSql显示结果但也返回错误

时间:2014-03-08 05:13:24

标签: cordova error-handling web-sql

我是这个phonegap和executeSql的新手。我正在尝试创建一个基本代码片段来更好地理解这些概念。无论如何,我的onDeviceReady函数中有以下代码

 db = window.openDatabase("myapplication","1.0","My Application DB","200000");
 tx.executeSql("CREATE TABLE IF NOT EXISTS MYTABLE (id, stockcode, quantity)");

我创建了一个名为&#34的按钮;保存"并且在点击它时会将值保存到数据库中

function saveDb(tx) {
  var stockcode = "HP13-1";
  var quantity = "1";
  tx.executeSql("INSERT INTO mytable (stockcode, quantity) VALUES (?,?)", [stockcode, quantity]);
}

到目前为止一切顺利。我有另一个名为&#34的按钮;显示结果"点击它会使用以下功能显示结果

function getDbResults(tx) {
   tx.executeSql("SELECT * FROM MYTABLE", [], onSelectQuerySuccess, onDbError);
}
function onSelectQuerySuccess(tx, results) {
   $("#showresults").empty();
   dbresults = results;
   var len = results.rows.length;
   for (var i = 0; i<len; i++) {
       $("#showresults").append("<li>"+results.rows.item(i).stockcode+"</li>");
   }
   $("#showresults").listview("refresh");
}

这会显示所需的结果,但在执行此操作后会返回error.code = 0和error.message =&#34;语句回调引发异常或语句错误回调未返回false&#34;

我不确定如何解决此问题。在这方面的任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

我要写的答案指出了一些我不理解的事情和一个解决方案的主张。

首先,我不理解您的CREATE TABLE语句,您没有提供任何数据类型(例如:ID INT NOT NULL,而不仅仅是ID)。

其次,每次必须与数据库交互时,尝试提供成功和错误回调。

第三,这是真正提出的解决方案,尝试在回调中返回一个布尔值,如指定的in this Apple document

您没有指定错误是在任何平台上发生还是仅在特定平台上发生,这可能是另一个有趣的信息。