在SQLite中使用事务

在SQLite中使用事务

用一个事务转账来实现SQLite的事务处理:
下面的person类是已经创建好了的表,在《创建数据库与完成数据添删改查(一)》中可以看到
<span style="white-space:pre">	</span>1> update person set amount = amount-10 where personid=1;
	2> update person set amount = amount+10 where personid=2;
	
<span style="white-space:pre">	</span>/**
	 * 实现事务   :转账
	 */
	public void payment(){
		//DBOpenHelper这个类是创建数据库的类,在《创建数据库与完成数据添删改查(一)》中有
		SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
		//要创建一个事务
		db.beginTransaction(); //开启事务
		//确保endTransaction会执行
		try{
			db.execSQL("update person set amount=amount-10 where personid=1");
			db.execSQL("update person set amount=amount+10 where personid=2");
			db.setTransactionSuccessful(); //设置事务的标志为true
		}finally{
			db.endTransaction();  
			//结束事务,有两种情况:commit,rollback,
			//事务的提交或回滚是由事务的标志决定的,
		    //true:事务就会提交,false:回滚(默认)
		}
		
	}


用一个测试类来执行一下:
//测试转账事务的准备:更新钱,也可以不要这步
	public void testUpdateAmount() throws Exception{
		PersonDao dao = new PersonDao(this.getContext());
		Person person1 = dao.find(1);
		Person person2 = dao.find(2);
		person1.setAmount(100);
		person2.setAmount(50);
		dao.update(person1);
		dao.update(person2);
		
	}
	//测试 事务   :转账
	public void testPayment() throws Exception{
		PersonDao dao = new PersonDao(this.getContext());
		dao.payment();
	}

执行后,就可以看到personid为1的人的10元钱转给了personid为2的人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值