Я новичок в Кордове. Я работаю над гибридным приложением (Targeting Android OS), где по таблицам базы данных запроса заполняются данные json, поступающие с сервера.лучший способ вставить данные в базу данных android sqlite с использованием больших json-данных, поступающих с сервера с использованием cordova
Теперь моя проблема в том, когда данные json были меньше, вставка была быстрее. Теперь размер данных JSON составляет около 40 МБ, которые я отправляю с сервера в формате 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.
Попробуйте использовать транзакцию db при вставке большего набора данных для оптимизации вставок. –
благодарит за ответ @ nikhil.thakkar. Я использую транзакцию, вы можете видеть, что мой код db.executeSql() находится внутри транзакции. Я создаю sql-запрос и выполняю запрос внутри транзакции. – AmritM
Извините, я забыл. Я имел в виду это. INSERT INTO 'tablename' ('column1') VALUES ('val1'), ('val2'), ('val2'), ('val2'); Вам нужно построить такую строку, а затем выполнить эту строку sql в одном выражении executeSql. Это сделает его более оптимистичным. –