使用单个查询将多个记录插入到WebSQL表中,来自对象数组的数据

时间:2014-11-24 20:04:05

标签: javascript mysql arrays sqlite

目前我在从服务器提取JSON并将其放入webSQL数据库后循环INSERT INTO查询。

虽然这有效,但我为每条记录执行SQL事务,这在移动设备上效率非常低。

鉴于我有一个对应于每行所需值的对象数组,如何在没有循环的情况下执行此操作?或者简单地循环一下会更好吗?

粗略地说,我有一个以下格式的数组:

[{"Timestamp": 323343553,
  "ID": 1,
  "Value1": "string"
  "Value2": 322}, ... more objects
]

1 个答案:

答案 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);
}