Android массовая вставка или игнорирование JSONArray - PullRequest
0 голосов
/ 01 мая 2019

Я получаю JSONArray данных от вызова ajax в моем приложении.Каков наилучший способ пропустить конфликт вставки / включения для таблицы SQLite в моем приложении?У меня есть следующий код:

try {
    JSONArray data = response.getJSONArray("data");
    ContentValues contentValues = new ContentValues();

    // I don't know what to do here. 
    // Do I do a for loop and convert the entire JSONArray into ContentValues 
    // with the column name and value for each item in the array? 

    db.insertWithOnConflict("Data", null, data, SQLiteDatabase.CONFLICT_IGNORE);

} catch (JSONException e) {
    e.printStackTrace();
}

1 Ответ

0 голосов
/ 02 мая 2019

Да, вам нужно написать цикл для преобразования данных из вашего JSONArray для вставки в вашу базу данных.Если вы используете библиотеку, которая может делать это автоматически, это на самом деле не сокращает время обработки данных, верно?

Однако вы можете минимизировать операции вставки в таблицу базы данных с помощью одной транзакции базы данных, как показано ниже.

SQLiteDatabase db = ...
db.beginTransaction();
try {
    // do ALL your inserts here
    db.setTransactionSuccessful()
} finally {
    db.endTransaction();
}

Вы также можете рассмотреть возможность использования AsyncTask для выполнения всех этих операций в фоновом потоке.

Надеюсь, это поможет.

...