事务
保证所有sql语句要么一起成功,要么一起失败
- 保证多条sql语句要么同时成功,要么同时失败
- 最常见案例:银行转账
-
事务api
try {
//开启事务
db.beginTransaction();
...........
//设置事务执行成功
db.setTransactionSuccessful();
} finally{
//关闭事务
//如果此时已经设置事务执行成功,则sql语句生效,否则不生效
db.endTransaction();
}
测试代码
public void transaction(){
try{
//开启事务
db.beginTransaction();
ContentValues values = new ContentValues();
values.put("salary",12000);
db.update("person",values,"name = ?",new String[]{"小志"});
//因为后面用的也是同一个values, 会导致第二次调用的时候 会携带第一次的数据 此时最好清空下数据
values.clear();
values.put("salary",16000);
db.update("person",new String[]{"小志的儿子"});
//int i = 3/0; //检测失败
//设置 事务执行成功
db.setTransactionSuccessful();
}
finally{
//关闭事务,同时提交,如果已经设置事务执行成功,那么sql语句就生效了,反之,sql语句回滚
db.endTransaction();
}
}

