android 使用数据库事务提高操作效率

//删除多条数据
	public void deleteMoreRecord(ArrayList 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次事务。而当自身使用显式的数据库事务时,这些删除数据的操作,就在一次数据库事务中执行,从而在删除(插入、更新)数据特别大的时候大大的提高效率。


你可能感兴趣的:(Android)