学习了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();
}
}
以上只是转账模块代码,但是足以说明事务的用法和重要用途。