目前我在从服务器提取JSON并将其放入webSQL数据库后循环INSERT INTO查询。
虽然这有效,但我为每条记录执行SQL事务,这在移动设备上效率非常低。
鉴于我有一个对应于每行所需值的对象数组,如何在没有循环的情况下执行此操作?或者简单地循环一下会更好吗?
粗略地说,我有一个以下格式的数组:
[{"Timestamp": 323343553,
"ID": 1,
"Value1": "string"
"Value2": 322}, ... more objects
]
答案 0 :(得分:0)
正如Cl所说,你可以将插入SQL命令循环到一个事务中,如下所示。
var db = openDatabase('mydb', '1.0', 'my first database', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT,name)');
});
var userArray = [{"name": "bob"}, { "name": "lee"}];
db.transaction(function (tx) {
for (var i = 0; i <userArray.length; i++)
{
tx.executeSql("insert into user(name) values(?)", [userArray[i].name],successCallBack,errorCallBack);
}
});
function successCallBack(){
console.log("inserted corrrectly !!");
}
function errorCallBack(tx,error){
if (query.indexOf('insert into') === -1)
alert("Error : " + error.message + " in " + query);
console.log(error.message + "in" + tx);
}