0

使用事务在插入语句中可以设置的值的最大数量?

我的 Android 应用程序功能示例:

public void addArray(ArrayList<MyObject> arrData) {

    this.mDb.beginTransaction();

    try {

        for(MyObject obj : arrData){

            ContentValues values = new ContentValues();
            values.put(KEY_ROW_ID, obj.getId());
            values.put(KEY_NAME  , obj.getName());
            values.put(KEY_ICON  , obj.getImage());

            //////// LIMIT HERE ?               
            this.mDb.insert(TABLE, null, values);
        }

        this.mDb.setTransactionSuccessful();

    }
    finally {
        this.mDb.endTransaction();
    }
}

谢谢

4

1 回答 1

2

每个事务的插入数量没有实际限制。

在看到未完成事务中的行数出现任何问题之前,您可能会遇到磁盘空间填充问题。

SQLite 将所有插入意图写入日志或 wal 文件,它很容易增长到千兆字节。

我个人曾尝试在一个事务中插入多达 100k 行,它工作得很好。

SQLite 作者 D. Richard Hipp 甚至建议在程序启动时打开事务,长时间做你需要做的任何事情,并且只有在退出或显式保存状态时才提交。这基本上是实现撤消功能的廉价方式 - 只需回滚当前事务。

于 2013-05-16T06:26:18.323 回答