我在 iOS 中使用具有“良好动态”的 Phonegap(Cordova)。我们有一个 15 列的表,需要根据条件一次插入超过 10000 到 200000 条记录。
但是当测试超过 2000 条记录插入时,我的应用程序在 iPAD 中崩溃了。
我尝试了两种不同的批量插入,如下面的链接
堆栈溢出答案(使用 UNION ALL 和 COMMA 分隔的插入)
我也尝试了这两种选择:
1)为每个插入打开一个事务。
2) 使用 for 循环在单个事务中进行多次插入。
在 iOS 模拟器仪器中进行测试时,插入超过 5000k 的记录时,两者都占用了超过 1GB 的内存(我怀疑这是导致问题的原因)。
当表有更多列而在IOS+SQLlite+PhoneGap+Good Dynamics中没有任何问题时,任何人都可以建议插入多条记录的更好解决方案吗
我使用的示例代码:
for(var j=0;j< bulkTransactions.length;j++){
(function(item,count){
db.transaction(function(tx){
if(item){
var insQuery= item;
tx.executeSql(insQuery, [],
function(tx,results){ //Success
if(count == bulkTransactions.length-1) {
if(callBackMethod != null)callBackMethod();
}
},
function(tx,e){
//Handle Error
}
);
}
});
}) (bulkTransactions[j],j);
}
该应用程序在 iOS 模拟器(甚至显示 1GB 内存使用)或 Chrome 浏览器中运行良好,下图显示了 iOS 模拟器中 12000 条记录的内存使用情况: