![](/img/trans.png)
[英]What's the proper way/syntax to access Active Record nested objects through the frontend's fetch request?
[英]What's proper JS syntax for deleting a record from a web database?
我使用以下内容通过innerHTML在HTML页面上显示基于Javascript的webSQL数据(包含4个字段):
var rowid = results.rows.item(i).id;
document.getElementById("output2").innerHTML += "<table><tr><td><index type='button' class='buttonDel' onclick='delRecord(\"" + rowid + "\")' value='Delete'>" + results.rows.item(i).id + "</td><td>" + results.rows.item(i).data1 + "</td><td>" + results.rows.item(i).data2 + "</td><td>" + results.rows.item(i).data3 + "</td></tr></table>";
在HTML表的ID列中会出现一个红色的Delete按钮,并将正确的ID放入var rowid中(已通过警报确认)。 该按钮调用以下功能删除记录。 当然,那不会发生。
// Delete a row in the DB
function delRecord(rowid) {
var db = window.openDatabase("Database", "1.0", "DEMO", 2000000);
db.transaction(delDB, errorCB, successCB);
}
function delDB(tx) {
tx.executeSql("DELETE from DEMO WHERE id == rowid");
}
删除记录的正确语法是什么?
按钮的格式化方法如下:
function querySuccess(tx, results) {
var len = results.rows.length;
console.log("Returned rows = " + results.rows.length);
for (var i = 0; i < len; i++) {
var rowid = results.rows.item(i).id;
document.getElementById("output2").innerHTML +=
"<table><tr><td><index type='button' class='buttonDel' onclick='delRecord(\"" +
rowid + "\")' value='Delete'>" +
results.rows.item(i).id +
"</td><td>" + results.rows.item(i).data1 +
"</td><td>" + results.rows.item(i).data2 +
"</td><td>" + results.rows.item(i).data3 + "</td></tr></table>";
}
正确的语法是DELETE FROM tableName [WHERE expr]
(基础实现全部使用SQLite,AFAIK。)
但是,有几个相关的问题:
使用的条件是错误的,SQL使用=
表示相等。
rowid
作为字符串内容是错误的。 那将永远不会是ID,因为没有完成“魔术替换”。 而是使用参数化查询并指定绑定值。
考虑:
function deleteRecord(rowid) {
var db = getCurrentDatabase();
db.transaction(
function (tx) {
tx.executeSql("DELETE FROM demo WHERE id = ?", [rowid]);
});
}
我还使用了闭包使rowid
易于访问。 有关更多常规和示例,请参考一些教程 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.