我需要一次在数据库中插入很多行,我正在寻找最有效的方法来做到这一点。我见过这样的代码:
db.beginTransaction();
for (ModelObject object : modelObjectsCollection){
ContentValues values = new ContentValues();
... // fill values variable with values from object
db.insert(TABLE_NAME, null, values);
values.clear();
}
db.setTransactionSuccessful();
在这种情况下,所有插入都作为一个操作完成,花费的时间更少。如果我将单行的插入封装到这样的方法中,它是否仍然可以作为单个操作工作:
public void insertAllRows(){
db.beginTransaction();
for (ModelObject object : modelObjectsCollection){
insertSingleRow(object);
}
db.setTransactionSuccessful();
}
public void insertSingleRow(ModelObject object){
ContentValues values = new ContentValues();
... // fill values variable with values from object
db.insert(TABLE_NAME, null, values);
}
是否也可以在单个事务中完成?此外,我不明白:如果我们不打电话是否正确?
db.beginTransaction(); ... db.setTransactionSuccessful();
显式地,但只调用 db.insert(),beginTransaction()-setTransactionSuccessful() 方法在 insert() 中被调用。相反,如果我们在 beginTransaction()-setTransactionSuccessful() 的调用之间调用 insert(),后两个方法不会在 insert() 内部调用?