我在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 * 警报。
答案 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);
。如果您不宣布updateCB
和errorCB
功能,它将无效。
我更新了代码。为我工作。
function updatemonthSaveingDB(tx)
{
tx.executeSql("UPDATE DEMO SET data='" + submitval + "' WHERE id='8'");
}