使用来自使用cordova的服务器的大型json数据将数据插入android sqlite数据库的最佳方法

使用来自使用cordova的服务器的大型json数据将数据插入android sqlite数据库的最佳方法,android,json,sqlite,cordova,phonegap-plugins,Android,Json,Sqlite,Cordova,Phonegap Plugins,我是科尔多瓦的新手。我正在开发一个混合应用程序(针对Android操作系统),其中请求数据库表由来自服务器的json数据填充 现在我的问题是,当json数据较少时,插入速度更快。现在JSON数据大小约为40MB,我正在以Gzip格式从服务器发送,因此设备能够更快地下载JSON数据,但将数据插入数据库表需要花费大量时间,有时甚至会挂起 有时设备在将数据插入sqlite数据库时关闭应用程序。我认为,插入占用了大量内存,导致应用程序崩溃 var tx = window.sqlitePlugin.ope

我是科尔多瓦的新手。我正在开发一个混合应用程序(针对Android操作系统),其中请求数据库表由来自服务器的json数据填充

现在我的问题是,当json数据较少时,插入速度更快。现在JSON数据大小约为40MB,我正在以Gzip格式从服务器发送,因此设备能够更快地下载JSON数据,但将数据插入数据库表需要花费大量时间,有时甚至会挂起

有时设备在将数据插入sqlite数据库时关闭应用程序。我认为,插入占用了大量内存,导致应用程序崩溃

var tx = window.sqlitePlugin.openDatabase({ name: "database_name.db" });


tx.transaction(function(db) {
    $.each(result[i],function(j,field){
        var insert_gen_code_desc = "insert or replace  into  table-name ( id , pk_code_group , pk_code , description , created_by , created_on , updated_by , updated_on , last_update , status , lastupdate , sl_no, upload_status ) values ("+result[i][j][0]['id']+",'"+result[i][j][0]['pk_code_group']+"','"+result[i][j][0]['pk_code']+"','"+result[i][j][0]['description']+"','"+result[i][j][0]['created_by']+"','"+result[i][j][0]['created_on']+"','"+result[i][j][0]['updated_by']+"','"+result[i][j][0]['updated_on']+"',"+result[i][j][0]['last_update']+",'"+result[i][j][0]['STATUS']+"','"+result[i][j][0]['lastupdate']+"',"+result[i][j][0]['sl_no']+",'0')";
db.executeSql(insert_gen_code_desc);
});
},errorCallback, successCallback);
有人能告诉我我做错了什么,因为我的应用程序在向表中插入大量数据时崩溃了,或者建议我使用更少内存(RAM)更快插入的方法


注意:我正在使用com.brodysoft.sqlitePlugin插件进行sqlite数据库操作。

这是一个已知的限制。at的版本(具有不同的许可方案)可以处理更大的事务。作为一种解决方法,您可以简单地使用较小的多事务存储数据。

这是一个已知的限制。at的版本(具有不同的许可方案)可以处理更大的事务。作为一种解决方法,您可以简单地使用较小的多个事务存储数据。

尝试使用db事务,同时插入较大的数据集以优化插入。感谢回复@nikhil.thakkar。我正在使用事务,您可以看到我的代码db.executeSql()在事务中。我正在构建sql查询并在事务内部执行查询。很抱歉我忽略了。我的意思是。。在“tablename”(“column1”)中插入值('val1')、('val2')、('val2')、('val2');您需要像这样构造一个字符串,然后在单个executeSql语句中执行该sql字符串。这将使它更加优化。不,我认为它不会优化…我需要一些技巧来释放内存try来使用db事务,同时插入更大的数据集来优化插入。谢谢回复@nikhil.thakkar。我正在使用事务,您可以看到我的代码db.executeSql()在事务中。我正在构建sql查询并在事务内部执行查询。很抱歉我忽略了。我的意思是。。在“tablename”(“column1”)中插入值('val1')、('val2')、('val2')、('val2');您需要像这样构造一个字符串,然后在单个executeSql语句中执行该sql字符串。这将使它更加优化。不,我不认为它会优化…我需要一些技巧来释放内存