zoukankan      html  css  js  c++  java
  • [android] 数据库的事务

    为什么需要事务,保证操作同时成功,最常见的场景银行转账,需要修改一下上一节的数据库进行模拟转账操作,修改数据库表,这时需要用到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();
            
        }
  • 相关阅读:
    VS2010-MFC(对话框:模态对话框及其弹出过程)
    VS2010-MFC(对话框:设置对话框控件的Tab顺序)
    VS2010-MFC(对话框:为控件添加消息处理函数)
    VS2010-MFC(对话框:创建对话框类和添加控件变量)
    manacher算法模板
    [洛谷P1017] 进制转换
    [洛谷P1126] 机器人搬重物
    [洛谷P1032] 字串变换
    [POI2005]SAM-Toy Cars
    [洛谷P1528] 切蛋糕
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5255742.html
Copyright © 2011-2022 走看看