Android:Sqlite插入大批量数据

假如现在要向Android本地数据库中插入1万条数据。按照一般的想法代码如下:

//假设strings.size() = 10000
    try {
        for (String data : strings) {
            ContentValues contentValues = new ContentValues();
            if(!TextUtils.isEmpty(data)){
                contentValues.put(key, data);
            }
            mDb.insert(table_name, null, contentValues);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        mDb.close();
    }

如上做法可能会花费大概2minute,这是因为每次插入都会创建一次事务。在看看下面这段代码:

//假设strings.size() = 10000
try {
        mDb.beginTransaction();
        for (String data : strings) {
            ContentValues contentValues = new ContentValues();
            if(!TextUtils.isEmpty(data)){
                contentValues.put(key, data);
            }
            mDb.insert(table_name, null, contentValues);
        }
        mDb.setTransactionSuccessful();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        mDb.endTransaction();
        mDb.close();
    }

比第一段多了3行,但插入操作花费的时间只需要4s左右,这是因为我们主动开启了一个事务,所以整个插入操作实在一个事务中完成的,花费的时间也大大的减少了。

你可能感兴趣的:(Android:Sqlite插入大批量数据)