Cordova/Phonegap SQL数据插入重复

Cordova/Phonegap SQL数据插入重复,cordova,Cordova,我正在用Cordova/Phonegap 2.2.0构建一个小型测试应用程序 该应用程序初始化并用5条记录填充数据库。每个插入都是通过一个函数执行的,该函数是从一个循环中调用的,这样我就可以很容易地改变记录的数量。出于测试目的,逻辑条件决定记录的id是奇数还是偶数,然后用适当的字符串填充详细信息字段。因此,我应插入5份记录,详细内容如下: (id) (detail) (1) (This record is odd) (2) (This record is even) (3) (This r

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

该应用程序初始化并用5条记录填充数据库。每个插入都是通过一个函数执行的,该函数是从一个循环中调用的,这样我就可以很容易地改变记录的数量。出于测试目的,逻辑条件决定记录的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条记录,则所有结果都显示“此记录为偶数”

因此,就好像最后插入的细节值正在应用于所有记录。要么就是我没有正确处理结果集

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

非常感谢

//创建对数据库的引用
函数getDatabase(){
返回窗口。openDatabase(“productDB”、“1.0”、“产品数据库”,200000);
//运行ondevicerady方法
ondevicerady();
填充数据库();
//PhoneGap已经准备好了
函数ondevicerady(){
db=getDatabase();
数据库事务(功能(tx){
tx.executeSql(“如果存在产品,则删除表”);
},数据库错误);
数据库事务(功能(tx){
tx.executeSql('CREATE TABLE IF NOT EXISTS products(id INTEGER主键自动递增,product_text)');
},数据库错误);
}
//运行select语句以拉出所有记录
函数getAllItems(){
数据库事务(功能(tx){
tx.executeSql('SELECT*FROM products',[],queryalSuccess,databaseError);
},数据库错误);
}
//处理SQLResultSet
函数查询成功(发送、结果){
var len=results.rows.length;
var输出=“”;

对于(i=0;i您一定弄乱了insert语句,请详细检查insert语法

请尝试以下代码:

// 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);
    }
//将记录插入数据库
函数insertProductItem(itemId){
如果(项目ID%2){
var productText=“Item”+itemId+”-这是一条奇数记录

”; }否则{ var productText=“Item”+itemId+”-这是一条偶数记录

”; } sql='插入到产品(产品文本)值(?); db.transaction(函数(tx){tx.executeSql(sql[productText]);}, 数据库错误); }
请注意,我已经解决了这个问题。问题在于要插入的字符串的连接。我已更改为使用占位符,如下所示:sql='INSERT INTO products(product_text)VALUES(?);db.transaction(函数(tx){tx.executeSql(sql,[productText]),DATABASERROR);