每个事务的最大插入数

时间:2013-05-15 21:39:27

标签: android database sqlite

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

我的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();
    }
}

由于

1 个答案:

答案 0 :(得分:2)

每笔交易的插入数量没有实际限制。

您可能会遇到磁盘空间填充问题,然后才能看到未完成事务中的行数存在任何问题。

SQLite将所有插入意图写入日志或沃尔玛文件,并且它可以很容易地增长到千兆字节。

我个人试图在一次交易中插入多达10万行,而且工作正常。

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