Javascript tx.executeSql()命中TypeError:输入错误

时间:2017-10-26 07:31:03

标签: javascript ibm-mobilefirst web-sql

我正在测试迁移的混合应用程序,从MobileFirst v7到v8。

现在我得到" TypeError"当我尝试执行更新语句时:

var db = openDatabase();
var addr1 = document.getElementById('Addr1').value;
var addr2 = document.getElementById('Addr2').value;
var addr3 = document.getElementById('Addr3').value;
var id = document.getElementById('Id').value;

db.transaction(function (tx) {
    sqlupdate= "UPDATE Profile SET Addr1 = '" + addr1 + "', ";
    sqlupdate= sqlupdate + " Addr2 = '" + addr2 + "', ";
    sqlupdate= sqlupdate + " Addr3 = '" + addr3 + "' ";
    sqlupdate= sqlupdate + " where Id ='" + id + "'";

    tx.executeSql(sqlupdate,errorOn,successOn);
});

function errorOn()
{
    alert("Error");
}

function successOn()
{
    alert("Profile Saved");
}

enter image description here enter image description here

我为SELECT和INSERT运行tx.executeSql()没有问题,只有在UPDATE时才会出现此错误。

任何人都可以指出我的错误? 感谢。

1 个答案:

答案 0 :(得分:0)

好的......最后我得到了答案。问题出在这里:

tx.executeSql(sqlupdate,errorOn,successOn);

此函数需要4个参数,需要切换回调的位置:

tx.executeSql(sqlupdate,*[updateParams]*,successOn, errorOn);

因此解决方案是将代码更改为以下内容:

db.transaction(function (tx) {
    sqlupdate= "UPDATE Profile SET Addr1 = ?, ";
    sqlupdate= sqlupdate + " Addr2 = ?, ";
    sqlupdate= sqlupdate + " Addr3 = ? ;
    sqlupdate= sqlupdate + " where Id =? ";

    tx.executeSql(sqlupdate,[addr1, addr2, addr3, id],successOn, errorOn);
});

对于最小的代码更改,您可以保留sql并只放一个空数组以使其工作:

tx.executeSql(sqlupdate,[],successOn, errorOn);