[android] 数据库的事务

Android转账事务处理
本文介绍在Android应用中如何通过SQLite数据库实现转账功能,并利用事务确保转账操作的原子性。通过具体的代码示例展示了如何创建、执行及管理数据库事务。

为什么需要事务,保证操作同时成功,最常见的场景银行转账,需要修改一下上一节的数据库进行模拟转账操作,修改数据库表,这时需要用到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();
        
    }

 

转载于:https://www.cnblogs.com/taoshihan/p/5255742.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值