Android批量插入或忽略JSONArray

时间:2019-05-01 19:08:53

标签: java android arrays sqlite insert

我正在从应用程序中的ajax调用接收JSONArray数据。在我的应用程序中的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 :(得分:0)

是的,您必须编写一个循环,以将JSONArray中的数据转换为要插入到数据库中的数据。如果您使用的是可自动执行此操作的库,那么它实际上并不会减少数据处理时间吗?

但是,您可以通过以下单个数据库事务来最大程度地减少对数据库表的插入操作。

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

您还可以考虑使用AsyncTask在后​​台线程中执行所有这些操作。

希望有帮助。