事务
保证所有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(); } }