Cordova / Phonegap SQL数据插入重复

时间:2012-11-26 10:20:58

标签: cordova

我正在使用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);
}

1 个答案:

答案 0 :(得分:0)

您必须弄乱插入语句,请详细检查插入语法here

请尝试以下代码:

// 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);
    }