数据库应用之-------------事务

学习了SQLite数据库,基本语法与MySQL操作相差无几,让我记挂的是数据库的事务,在银行转账系统比较常用,下面做个简单的总结吧。

事务:执行多条sql语句要么同时成功,要么同时执行失败,在银行转账系统中,这很有必要!

下面通过一个简单的小李子体会一下:

public static void trans(Context context, int money, Float[] accounts,SQLiteDatabase db, String[] accountor) {
		/**
		 * 转账实现过程:获取王五和李四的账户,将王五的账户余额减去转账金额
		 * 将李四的账户余额加上转账的金额,
		 */
		ContentValues values = new ContentValues();
		//1.
		float account_out = accounts[0];
		//加入事务处理
		db.beginTransaction();
		try {
			//设置转出账户
			values.put("account", account_out = (account_out-money));
			db.update("customer", values, "name=?", new String[]{accountor[0]});
			//设置转入账户
			ContentValues valuesl = new ContentValues();
			float account_in = accounts[1];
			//加入一个模拟断电事件
			int i = 100/0;
			//在李四账户加上转账金额
			valuesl.put("account", account_in = (account_in+money));
			db.update("customer", valuesl, "name=?", new String[]{accountor[1]});
			db.setTransactionSuccessful();//设置事务执行成功标记
		}catch (Exception e) {
			// TODO: handle exception
			
				Toast.makeText(context, "服务器繁忙,等会儿再转!", Toast.LENGTH_SHORT).show();
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e1) {
					e1.printStackTrace();
				}
			//throw new RuntimeException("服务器繁忙,等会儿再转!");
		}
		finally {
			db.endTransaction();
		}
		
	}

以上只是转账模块代码,但是足以说明事务的用法和重要用途。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值