SQLite更新查询在Phonegap中不起作用

时间:2012-01-26 05:27:26

标签: javascript sqlite cordova

我在SQLite中使用Phonegap有一个名为Demo的表。我在其中插入了一些值。现在我想更新一条记录。

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);

db.transaction(updatemonthSaveingDB, errorCB);

function updatemonthSaveingDB(tx) 
{
    tx.executeSql("UPDATE DEMO SET data = " + submitval + " WHERE id = " + 8, [], updateCB, errorCB);
}

function errorCB(err) 
{
    alert("Error processing SQL: " + err.code);
}

现在,当我抛出此查询时,它显示* 错误处理SQL:0 * 警报。

3 个答案:

答案 0 :(得分:6)

问题是在sqlite查询中传递变量的方式是不正确的 在这个功能

function updatemonthSaveingDB(tx) 
{
tx.executeSql("UPDATE DEMO SET data = " + submitval + " WHERE id = " + 8, [],   updateCB, errorCB);
 }

sqlite将“UPDATE DEMO SET data =”视为查询,因为您使用了“错误。 正确的方法是:

      function updatemonthSaveingDB(tx) 
{
    tx.executeSql("UPDATE DEMO SET data ='" +submitval+"' WHERE id = '"+8+"' ;", [],   updateCB, errorCB);
}

答案 1 :(得分:0)

我相信发生的事情是您的交易实际上是成功的。如果你去查看这个SQLite错误代码表(http://www.sqlite.org/c3ref/c_abort.html),你会看到错误信息“0”读作“/ *成功的结果* / ”

如果“updateCB”实际上不是一个函数(你没有在这里定义),是否有可能将errorCB作为成功回调读取并作为结果被调用?

答案 2 :(得分:0)

在每个列值之间给出引用''

我也删除[], updateCB, errorCB);。如果您不宣布updateCBerrorCB功能,它将无效。

我更新了代码。为我工作。

function updatemonthSaveingDB(tx) 
{
   tx.executeSql("UPDATE DEMO SET data='" + submitval + "' WHERE id='8'");
}