在SQLite中使用事务

转自:www.eoeandroid.com/thread-201327-1-1.html

1.在数据库表person添加字段amount
2.在Person类中添加相应的amount
3.在PersonService添加payment()方法
  1. public void payment(){
  2.                 SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
  3.                 db.beginTransaction(); //开户事务
  4.                 try{
  5.                 db.execSQL("update person set amount=amount-10 where personId=1");
  6.                 db.execSQL("update person set amount=amount-10 where personId=2");
  7.                 db.setTransactionSuccessful(); //设置事务的标志为True
  8.                 }finally{
  9.                         //为何要加try...catch
  10.                         //因为添加了db.setTransactionSuccessful(),若execSQL中出现问题
  11.                         //则不会执行db.endTransaction()
  12.                         db.endTransaction(); //结束事务,有2种情况:commit, rollback
  13.                 }               
  14.                 //事务的提交或回滚是由事务的标志决定的
  15.                 //如果事务的标志为True,事务就会提交
  16.                 //否则事务就会回滚,默认情况下事务的标志为false
  17.         }
复制代码
4.初始化amount值,便于调用
  1. public void testUpdateAmount() throws Exception{
  2.                 PersonService service = new PersonService(this.getContext());
  3.                 Person person1 = service.find(1);
  4.                 Person person2 = service.find(2);
  5.                 person1.setAmount(100);
  6.                 person2.setAmount(200);
  7.                 service.update(person1);
  8.                 service.update(person2);
  9.         }
复制代码
5.在单元测试类PersonServiceTest中添加测试方法testPayment()
  1. public void testPayment() throws Exception{
  2.                 PersonService service = new PersonService(this.getContext());
  3.                 service.payment();
  4.         }
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值