1

当我第一次运行应用程序时,我想创建一个表并在表中输入一些行。为此,我编写了这段代码,它运行良好:

            //Creating the table
        db.execSQL(MRM_BOOKING_LOGIN_TABLE_CREATE);         
        //Setting the values in the table
        ContentValues contentValuesLogin = new ContentValues();
        contentValuesLogin.put(USER_ID, "asdf");
        contentValuesLogin.put(PASSWORD, "1234");
        //Inserting a row in the table
        db.insert(MRM_BOOKING_LOGIN_TABLE, null, contentValuesLogin);

但我想在表中输入至少 15 到 20 行。每次插入一行后,我都会清除 ContentValues 对象(或创建另一个 ContentValues 对象)并在新创建的表中输入另一行,这是一个好主意吗?这样,代码行数也会增加很多。我相信可能还有其他更好的替代方法可以做到这一点。请建议

问候,

4

3 回答 3

2

我认为,插入多条记录的唯一方法db.insert是使用循环将它与 SQLite Transaction结合起来,它会加快这个过程。

于 2012-04-15T02:46:45.387 回答
2

示例代码:

try {
            // open the database
            db.beginTransaction();

            for (your objects) {
                ContentValues cv = new ContentValues();
                cv.put(COL1, obj.p1);
                cv.put(COL2, obj.p2);
                //.....

                long id = db.insertOrThrow(DATABASE_TABLE, COL_Id, cv);
            }

            db.setTransactionSuccessful();
} catch (Exception e) {
            throw e;
        } finally {
            db.endTransaction();
            // close database
        }
于 2012-04-15T04:36:25.310 回答
-1

您可以使用 插入多行 ContentResolver.bulkInsert (Uri url, ContentValues[] values)

可以从这里获得更多信息:

使用 applyBatch 插入数千个联系人条目很慢

希望这会帮助你。

于 2012-04-15T02:44:34.903 回答