2

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

1 回答 1

0

您一定是在弄乱插入语句,请在此处详细检查插入语法。

请尝试以下代码:

// 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);
    }
于 2012-11-26T11:51:23.557 回答