Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当SQLLite使用Phonegap和良好的动态性插入超过3000条记录时,iOS应用程序崩溃_Ios_Sqlite_Cordova_Web Sql_Good Dynamics - Fatal编程技术网

当SQLLite使用Phonegap和良好的动态性插入超过3000条记录时,iOS应用程序崩溃

当SQLLite使用Phonegap和良好的动态性插入超过3000条记录时,iOS应用程序崩溃,ios,sqlite,cordova,web-sql,good-dynamics,Ios,Sqlite,Cordova,Web Sql,Good Dynamics,我在iOS中使用具有“良好动态”的Phonegap(Cordova)。 我们有一个15列的表,需要根据条件一次插入10000到200000多条记录 但我的应用程序在iPAD上测试超过2000条记录时崩溃了 我尝试了两种不同的批量插入,如下链接所示 (使用UNION ALL和逗号分隔的插入) 我还尝试了两种选择: 1) 为每个插入打开一个事务 2) 使用for循环在单个事务中多次插入 在iOS模拟器中测试时,插入超过5000k的记录时,两个仪器都占用了1GB以上的内存(我怀疑这是导致问题的原因)

我在iOS中使用具有“良好动态”的Phonegap(Cordova)。 我们有一个15列的表,需要根据条件一次插入10000到200000多条记录

但我的应用程序在iPAD上测试超过2000条记录时崩溃了

我尝试了两种不同的批量插入,如下链接所示 (使用UNION ALL和逗号分隔的插入)

我还尝试了两种选择:

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);
}
for(var j=0;j
该应用程序在iOS模拟器(甚至显示1GB内存使用)或Chrome浏览器中运行良好,下图显示iOS模拟器中12000条记录的内存使用情况:


是的,即使我在插入20000多条记录时也遇到了同样的问题。但我已经通过分割100条记录来实现,这样就不会消耗更多的内存,显然这需要相同的时间。您所需要做的就是在后台确保主UI线程在进程完成之前未被阻止(或)设置加载程序。在我的情况下,插入10000只需要15秒。你有什么样的代码可以分享吗?你们是如何在Background开始这一过程的,按照穆罕默德·伊姆兰(Mohammed Imran)在上面的建议,每1000条记录延迟一次,现在一切正常,很高兴我的回答对你们有所帮助:)