2

我在 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 条记录的内存使用情况:

在此处输入图像描述

4

0 回答 0