Cordova/Phonegap SQL 数据插入重复



我正在用Cordova/Phonegap 2.2.0构建一个小型测试应用程序

该应用程序初始化并填充包含 5 条记录的数据库。每个 INSERT 都通过一个函数执行,并且该函数从循环中调用,以便我可以轻松改变记录的数量。出于测试目的,逻辑条件确定记录的 id 是奇数还是偶数,然后使用适当的字符串填充详细信息字段。因此,我应该插入 5 条记录,详细信息如下:

(id) (detail)
(1)  (This record is odd)
(2)  (This record is even)
(3)  (This record is odd)
(4)  (This record is even)
(5)  (This record is odd)

但是,当我检索单个记录或所有记录的数据时,我总是得到"此记录是奇数"的详细信息:

(1)  (This record is odd)
(2)  (This record is odd)
(3)  (This record is odd)
(4)  (This record is odd)
(5)  (This record is odd)

如果我将循环更改为插入 6 条记录,那么我的所有结果都显示"此记录是偶数"

因此,就好像上次插入的详细信息值正在应用于所有记录。要么这样,要么我没有正确处理结果集。

下面的示例代码,如果有人可以提供帮助。

非常感谢

// Create a reference to the database
function getDatabase() {
    return window.openDatabase("productDB", "1.0", "Product Database", 200000);
// Run the onDeviceReady method
onDeviceReady();
populateDatabase();
// PhoneGap is ready
function onDeviceReady() {
    db = getDatabase();
    db.transaction(function(tx) {
      tx.executeSql('DROP TABLE IF  EXISTS products');
    }, databaseError);
    db.transaction(function(tx) {
      tx.executeSql('CREATE TABLE IF NOT EXISTS products (id INTEGER PRIMARY KEY AUTOINCREMENT, product_text)');
    }, databaseError);
}
// Run a select statement to pull out all records
function getAllItems() {
    db.transaction(function(tx) {
    tx.executeSql('SELECT * FROM products', [], queryAllSuccess, databaseError);
    }, databaseError);
}
// Process the SQLResultSet
function queryAllSuccess(tx, results) {
    var len = results.rows.length;
    var output = '';
    for (i=0; i<len; i++){
        output = output + '<h2> ID ' + results.rows.item(i).id + '</h2>';
        output = output + '<p>' + results.rows.item(i).product_text + '</p>';
    }
    messageElement.html(output);
}
// Populate the database
function populateDatabase() {
    for (i=1; i<=5; i++)
    {
      insertProductItem(i);
    }                            
}
// Insert record into the database
function insertProductItem(itemId) {
    if ( itemId % 2) {
        var productText = "<p>Item " + itemId + " - This is an odd record</p>";
    } else {
        var productText = "<p>Item " + itemId + " - This is an even record</p>";
    }
    sql = 'INSERT INTO products (product_text) VALUES ("' + productText + '")';
    db.transaction(function(tx) {
        tx.executeSql(sql);
    },databaseError);
}

你一定弄乱了插入语句,请在这里详细检查插入语法。

请尝试以下代码:

// Insert record into the database
function insertProductItem(itemId) {
    if ( itemId % 2) {
        var productText = "<p>Item " + itemId + " - This is an odd record</p>";
    } else {
        var productText = "<p>Item " + itemId + " - This is an even record</p>";
    }
    sql = 'INSERT INTO products (product_text) VALUES (?)'; 
    db.transaction(function(tx) { tx.executeSql(sql, [productText]); },
       databaseError);
    }

最新更新