android 数据库事务
2015-06-08 17:04
106 查看
上一篇介绍了SQLite的简单用法,现在就来介绍一下数据库事务的简单用法,在使用到数据库的时候,事务处理是非常重要的。
首先android数据库操作效率是非常低的,因为每执行一条数据操作系统默认commit一次,那速度就可想而知了,那数据库事务就可以有效的解决这个问题;其次呢是保证数据的一致性,让一个事务中的所有操作都成功执行,才会被commit。
接下来我们就以模拟转账为例,进行一下操作,看一看数据库事务怎么应用。假如说张三给李四转1000块钱,张三卡里的钱被划扣掉了,然后这时,突然断电了,李四并没有收到钱,这种情况是肯定不被允许的,那就体现了数据库事务的好处,它所要求的是:当张三的钱被划扣过并且李四也收到钱了,这个操作才会执行成功。倘若该事务执行过程中出现了意外而导致任何一方的操作没有执行成功,那所有操作就回滚到执行前的状态,也就是:我当你从没来过。
它涉及到三个很重要的方法:
db.beginTransaction();// 开启事务
db.setTransactionSuccessful();// 标记数据库事务开启成功
db.endTransaction();// 结束事务
接下来代码说明,还用上一篇的那个数据库就行,只需添加一个account字段即可,用来当做账户金额。看一下示例代码:
在try代码块中,倘若中间出现了任何异常,该转账操作均不会成功。这样,就达到我们想要的目的了。
首先android数据库操作效率是非常低的,因为每执行一条数据操作系统默认commit一次,那速度就可想而知了,那数据库事务就可以有效的解决这个问题;其次呢是保证数据的一致性,让一个事务中的所有操作都成功执行,才会被commit。
接下来我们就以模拟转账为例,进行一下操作,看一看数据库事务怎么应用。假如说张三给李四转1000块钱,张三卡里的钱被划扣掉了,然后这时,突然断电了,李四并没有收到钱,这种情况是肯定不被允许的,那就体现了数据库事务的好处,它所要求的是:当张三的钱被划扣过并且李四也收到钱了,这个操作才会执行成功。倘若该事务执行过程中出现了意外而导致任何一方的操作没有执行成功,那所有操作就回滚到执行前的状态,也就是:我当你从没来过。
它涉及到三个很重要的方法:
db.beginTransaction();// 开启事务
db.setTransactionSuccessful();// 标记数据库事务开启成功
db.endTransaction();// 结束事务
接下来代码说明,还用上一篇的那个数据库就行,只需添加一个account字段即可,用来当做账户金额。看一下示例代码:
/** * 转账业务 * * @param name1 * 汇款人名称 * @param name2 * 收款人名称 */ public void transfer(String name1, String name2) { SQLiteDatabase db = stuHelper.getWritableDatabase(); db.beginTransaction();// 开启事务 try { // name1的账户减去1000 db.execSQL("update student set account=account-1000 where name=?", new String[] { name1 }); // name2的账户加上1000 db.execSQL("update student set account=account+1000 where name=?", new String[] { name2 }); db.setTransactionSuccessful();// 标记数据库事务开启成功 } catch (Exception e) { // 当转账过程中出现异常,打印log Log.i("SQLite_Aty:", "哎呀,转账出错了!"); } finally { db.endTransaction();// 结束事务 } }
在try代码块中,倘若中间出现了任何异常,该转账操作均不会成功。这样,就达到我们想要的目的了。
相关文章推荐
- Android Bundle类别
- Android性能测试工具 使用方法
- Android: 信息推送
- Android 通用型手电筒代码
- Android触摸屏事件派发机制详解与源码分析一(View篇)
- android学习之---滚动新闻视图
- Android 圆形/圆角图片的方法
- Android Studio --自动删除没有用的资源,给APK减减肥
- Android 组件ContentProvider
- Android初步了解入门
- android的init.rc文件详解
- android log技巧
- android 整理了800篇非常经典的文章
- android手机可视化远程控制电脑的设计
- Android 5.0 版本使用ksoap2连接webservice报java.lang.ClassCastException
- 如何在android studio 1.0 启动时设置代理
- 解决导入android.support.v7的问题
- Android控件之ScrollView(scrollbarStyle)
- Android访问远程数据库之调用Webservice
- 【Android】查看程序每个方法所花费的时间