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