SQLite:无法删除数据库中的行

时间:2013-07-08 07:46:17

标签: sqlite

我有以下代码将数据插入TestDB数据库,我可以插入并删除所有行成功但删除一行不起作用。

请告诉我代码有什么问题。我认为问题来自函数deleteRow无法识别column1值。

由于

<script>

    var db = window.openDatabase("Test", "1.0", "Test DB", 1000000);
    var column1= document.getElementById("column1");
    var column2= document.getElementById("column2");
    var column3= document.getElementById("column3");
    var results = document.getElementById("results");
    var id = document.getElementById('id');     
    var Delete = document.getElementById('Delete');     


    function InsertDB(){
       if ((column1.value!='') && (column2.value!='') && (column3.value!='')) {
      db.transaction(function(tx) {
          tx.executeSql('CREATE TABLE IF NOT EXISTS TestDB (id INTEGER, column1 TEXT, column2 TEXT, column3 TEXT)');
          tx.executeSql('INSERT INTO TestDB (column1, column2, column3) VALUES (?, ?, ?)', [column1.value, column2.value, column3.value], ShowandReset);
    }); 
    }
         else alert("Column cannot be empty");
    }



    function ShowDB() { 
    results.innerHTML = ''; 
    db.transaction(function(tx) {

      tx.executeSql("SELECT * FROM TestDB", [], function(tx, result) {
        dataset = result.rows;
        for (var i = 0, item = null; i < dataset.length; i++) {
         item = dataset.item(i);
         results.innerHTML += item['column1'] + ' , ' + item['column2'] + ' , ' + item['column3'] + '   ' + '<a href="#" onclick="deleteRow('+item['column1']+')"> Delete this row</a>' + '</br>';
        }               

        });
            });
                        }


function deleteRow(a) {

   db.transaction(function(tx) {
        tx.executeSql("DELETE FROM TestDB WHERE column1=a");
        });
        ShowDB();
        }

function DeleteDB() {
   db.transaction(function(tx) {
        tx.executeSql("DELETE FROM TestDB");
        });
        ShowDB();
        } 

function resetForm(){
    column1.value = '';
    column2.value = '';
    column3.value = '';
    id.value = ''; 
    }
function ShowandReset(){ 
    resetForm();
    ShowDB();
    }
function LoadRow(i) {

    var item = dataset.item(i);     
    column1.value = item['column1'];
    column2.value = item['column2'];
    column3.value = item['column3'];
    id.value = item['id']; 
    }


</script>

2 个答案:

答案 0 :(得分:1)

现在已经澄清了问题的新解决方案。

function deleteRow(a)
{
//a is a paramete
//this is a query string, so you need to append a otherwise it is interpreted litterally
 var queryString = "DELETE FROM TestDB WHERE column1='"+a+"'";
//Execute queryString as before
}

答案 1 :(得分:0)

试试这个:

db.transaction(function (tx) {
        tx.executeSql('DELETE FROM TestTable', []);
    });

使用WHERE子句:

db.transaction(function (tx) {
        tx.executeSql('DELETE FROM TestTable WHERE COLUMN = ?', [yourValue]);
    });
相关问题