我实现了ContentProvider bulkInsert()方法,以便在事务内的表中插入大量行,但在此之后,我需要在另一个表中进行更新,而且只有在大容量插入被提交时才需要这样做。这两个操作需要是原子的,无论是做还是不做,我怎么做呢?
这是bulkInsert方法:
@Override
public int bulkInsert(Uri uri, ContentValues[] values){
int nrInserted = 0;
String TABLE;
int uriType = mUriMatcher.match(uri);
switch (uriType){
case FEEDS:
TABLE = FeedsProviderContract.TABLE_NAME;
break;
default:
throw new IllegalArgumentException( "Unknown URI: " + uri );
}
SQLiteDatabase db = mDbHelper.getWritableDatabase();
//Begin inner transaction
db.beginTransaction();
try {
for (ContentValues cv : values){
db.insertOrThrow(TABLE, null, cv);
nrInserted++;
}
db.setTransactionSuccessful();
getContext().getContentResolver().notifyChange(uri,null);
} catch (SQLException ex){
ex.printStackTrace();
}
finally {
db.endTransaction();
}
return nrInserted;
}现在,当我调用它时,我可以这样做一个外部事务吗?我想这不管用。
...
//Begin outer transaction
getContentResolver().getContentProvider().bulkInsert(...);
//Update the other table
//End outer Transaction发布于 2013-09-30 11:13:33
我需要的是ApplyBatch,而不是BulkInsert,它现在按照我想要的方式工作。
https://stackoverflow.com/questions/19051224
复制相似问题