[android] 数据库的事务
2023-02-18 15:47:13 时间
为什么需要事务,保证操作同时成功,最常见的场景银行转账,需要修改一下上一节的数据库进行模拟转账操作,修改数据库表,这时需要用到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(); }
相关文章
- axios&spring前后端分离传参规范总结
- 【小程序专栏】个人及企业资质分别该如何注册小程序
- OpenHarmony移植案例与原理:如何适配服务启动引导部件bootstrap_lite
- OpenHarmony移植案例:如何适配服务启动引导部件bootstrap_lite
- BootstrapTable 行内编辑解决方案:bootstrap-table-editor
- 网站在线客服系统源码 | 全渠道在线客服代码下载 (最新版支持外贸商城/H5/小程序/公众号对接)
- 前端vue2+vue-router3+ElementUI+axios综合使用代码教程登录页案例
- 在线客服系统对接微信小程序(客服消息推送)
- 【小程序】同一微信号在微信开发工具上怎么切换小程序
- 【小程序】微信公众号模板消息跳转小程序发送失败:errcode=40013 , errmsg=invalid appid rid:
- 【小程序】微信小程序报错47001 - data format error hint
- 【小程序】微信小程序报错:用户绑定的手机需要进行验证,请在客户端完成短信验证
- 【小程序】微信小程序设置globalData全局数据
- 【小程序】获取手机号报错:getPhoneNumber:fail no permission
- 【小程序】小程序webview不支持打开非业务域名请重新配置
- 【uniapp】uniapp微信小程序开发:启动微信开发者工具提示no such file or directory错误
- 【小程序】uniapp发行微信小程序上传失败Error: Error: {"errCode":-10008,"errMsg":"invalid ip
- 【小程序】如何获取微信小程序代码上传密钥?
- [前端] 前端bootstrap col-xs-6 col-md-3的布局意思
- [PHP] laravel框架注意bootstrap/cache