以前用database从来都是直接执行,db.execute()。
今天看公司1.0的源码中又学习了一个逻辑,
SecureSQLiteDatabase db = null;
try {
db = mOpenHelper.openDatabase();
db.beginTransaction();
try {
todo 数据操作
};
//db 所要执行的操作
db.update(MstDataEntry.TABLE_NAME, values, whereClause, whereArgs);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
} finally {
mOpenHelper.close();
}
程序执行到endTransaction() 方法时会检查事务的标志是否为成功,
如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,
如果没有调用setTransactionSuccessful() 方法则回滚事务。
这样就能使我们要执行的操作也就是事务被确定执行才返回,并关掉db。