【问题标题】:best way to insert data into android sqlite database using large json data coming from server using cordova使用来自使用cordova的服务器的大型json数据将数据插入android sqlite数据库的最佳方法
【发布时间】:2015-11-08 09:12:56
【问题描述】:

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

现在我的问题是当 json 数据较少时,插入速度更快。现在我从服务器以 Gzip 格式发送的 JSON 数据大小约为 40MB,因此设备能够更快地下载 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 数据库操作。

【问题讨论】:

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

标签: android json sqlite cordova phonegap-plugins


【解决方案1】:

这是一个已知限制。 https://github.com/litehelpers/Cordova-sqlite-enterprise-free 的版本(具有不同的许可方案)可以处理更大的交易。作为一种解决方法,您可以简单地使用较小的多个事务来存储数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2015-02-18
    • 2021-05-19
    • 2011-09-21
    相关资源
    最近更新 更多