[android] 数据库的事务
2023-02-18 15:49:56 时间
为什么需要事务,保证操作同时成功,最常见的场景银行转账,需要修改一下上一节的数据库进行模拟转账操作,修改数据库表,这时需要用到PersonSQLiteOpenHelper类中的onUpgrade()方法,修改一下构造方法中的version,就会回调到onUpgrade()方法,在此方法里面执行修改表的sql语句
这个方法只在版本号发生变化的时候调用一次,参数中有SQLiteDatabase对象,调用db对象的execSql()方法,传入sql语句 alter table person add account varchar(20) ,增加一个字段,把数据库文件导出到桌面上,使用SQLite expert personal 3软件打开。
先添加两条数据,添加数据使用db对象的系统api,先new获取ContentValues对象,调用values对象的put()方法,参数是key val,把数据放进去,调用db对象的insert()方法,插入数据。
使用事务,调用db对象的beginTransaction()方法开启事务,然后一个try catch包裹,try块里执行多条sql语句,调用db对象的setTransactionSuccessful()标记成功,finally块里调用db对象的endTransaction()方法提交或者回滚事务
Cmd 执行adb shell命令,进入android系统,cd /data/data/包名/database/,执行sqlite3 persion.db 进入数据库命令行。
测试用例:
/** * 测试事务 * @throws Exception */ public void testTransaction() throws Exception{ PersonSQLiteOpenHelper helper =new PersonSQLiteOpenHelper(getContext()); SQLiteDatabase db=helper.getWritableDatabase(); db.beginTransaction(); try { db.setTransactionSuccessful(); db.execSQL("update person set account=account-100 where id=7"); db.execSQL("update person set account=account+100 where id=8"); } finally { db.endTransaction(); } db.close(); }
相关文章
- 用这个库 3 分钟实现让你满意的表格功能:Bootstrap-Table
- 利用Frida绕过Android App(apk)的SSL Pinning
- Flask 框架:运用Axios库实现前后端交互
- 搭建Typecho小程序(QQ微信通用)
- Drozer-Android安全测试
- 个推支持小程序消息推送,助力开发者实现用户高触达、高转化
- android 终端模拟器
- android 系统浏览器 源码-Android 最最最简单的浏览器代码
- Android画中画(PIP)模式使用
- Android画中画(PIP)进阶---Action按钮的使用
- Android Kotlin制作签名白板并保存图片
- IOS中block和代理
- iOS对象属性详解
- ios多线程-GCD基本用法
- IOS开发-KVC
- IOS开发-KVO
- ASP.NET Core Web App应用第三方Bootstrap模板
- ABP入门系列(14)——应用BootstrapTable表格插件
- 软件分享 | 第十六期 安卓免费漫画APP
- 搭建IOS和Android性能监控工具