//删除多条数据
public void deleteMoreRecord(ArrayList<AlarmRecordArch> checkedRecords){
//获取可写的数据库对象
sqliteDatabase = dbHelper.getWritableDatabase();
String sql = "delete from " + TABLE_NAME + " where id = ?";
//预编译
SQLiteStatement stat = sqliteDatabase.compileStatement(sql);
//开始事务
sqliteDatabase.beginTransaction();
int length = checkedRecords.size();
AlarmRecordArch singleRecord = new AlarmRecordArch();
for (int i = 0;i < length;i ++) {
singleRecord = checkedRecords.get(i);
stat.bindLong(1, singleRecord.getIndex());
stat.executeUpdateDelete();
}
//事务成功完成,没有这句则事务会自动回滚
sqliteDatabase.setTransactionSuccessful();
//结束事务
sqliteDatabase.endTransaction();
sqliteDatabase.close();
}
QUESTION: 为什么事务能够显著的提高数据库操作效率?
在整个数据库中,执行任何一类操作诸如sqliteDatabase.delete()都会创建一个数据库事务,存在这样一种影响效率的情况:需要一次删除N条数据,程序就会创建N次事务。而当自身使用显式的数据库事务时,这些删除数据的操作,就在一次数据库事务中执行,从而在删除(插入、更新)数据特别大的时候大大的提高效率。