![](/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.