簡體   English   中英

從網絡數據庫刪除記錄的正確JS語法是什么?

[英]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。)

但是,有幾個相關的問題:

  1. 使用的條件是錯誤的,SQL使用=表示相等。

  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM