我有一个使用AngularJS,Monaca和OnsenUI创建的跨平台应用程序。对于应用程序,我实现了SQLite数据库。
我可以创建一个表,我可以在其中插入值,但是我在更新表中的行时遇到了问题。
我所做的是创建一个表,然后在其中插入一个初始值(ID)。当用户与视图上的表单进行交互时,我需要在创建的表中更新列值,并且ID存在。
我在 app.js 中的功能从视图表单中获取所选选项,如下所示。
$scope.myID = "";
$scope.changedValue = function (selectedValue) // The value selected on the views Form
{
$scope.myID = selectedValue;
insertIntoDatabase($scope.myID, "tb_my_table", "my_id");
break;
}
我的 insertIntoDatabase(...)。
的功能function insertIntoDatabase(value, tableName, columnName)
{
var sql = 'INSERT OR IGNORE INTO ' + tableName + ' (' + columnName + ') VALUES (?)'; // WORKING
db.transaction(function (tx) { tx.executeSql(sql, [value]); }); // WORKING
break;
}
这可以按预期工作,我可以在查询表时看到插入的值。
但我需要做的是根据视图中用户选择的选项更新初始插入后表中的行。
我有一个类似的功能来更新从 changedValue 函数调用的表(通过省略的switch-statement)。
对UPDATE的方法调用:
updateDatabase($scope.myValue, "tb_my_table", "my_val");
我的功能是更新表格行:
function updateDatabase(value, tableName, columnName)
{
var sql = 'UPDATE ' + tableName + ' SET ' + columnName + ' VALUES (?) WHERE my_id = "' + $scope.myID + '"'; // NOT WORKING - NULL
db.transaction(function (tx) { tx.executeSql(sql, [value]); }); // NOT WORKING - NULL
break;
}
因此我尝试使用新的列值更新表,其中id与初始ID相同。语法中是否有错误或是否存在其他问题?调试器不会抛出任何错误 - 当我查询列 my_val 时,我得到的只是NULL。