Android Studio SQLite数据库应用(二)

Android Studio SQLite数据库应用(二)

版本 Android Studio 1.5.1

事务处理
升级数据库的最佳写法

哈哈刚刚写完 SQLite数据库应用(一),接着把后面的写完吧;

事务处理

所谓事务处理就是,保证在完成一系列操作的时候,要么全部完成要么一个都完成不了。我还用之前的代码作为案例;现在我要把Book表中的数据都删掉,让后写入新的数据;如果在这个操作过程中出现了异常,那么表中的数据还是原先的,一切都回到事务开始之前。(具体看程序中的注释)

 Button replaceData = (Button) findViewById(R.id.replace_data);
        replaceData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                //开启一个事务
                db.beginTransaction();
                try {
                    db.delete("Book",null,null);
                    //这边手动抛出一个异常(NullPointerException())
                    //这样之后添加新的数据是执行不到的,由于中途出现了异常导致事务的失败,那么旧的数据也是删不掉的,可以看下面的图片。
                    if (true){
                        throw new NullPointerException();
                    }
                    ContentValues values = new ContentValues();
                    values.put("name","Game of Thrones");
                    values.put("author","Katty");
                    values.put("pages",720);
                    values.put("price",60);
                    db.insert("Book", null, values);
                    //事务执行成功
                    db.setTransactionSuccessful();
                }catch (Exception e){
                    e.printStackTrace();
                }finally {
                //结束事务
                    db.endTransaction();
                }
            }
        });

这里写图片描述

当有异常时显示的还是上一篇Book表中的数据

这里写图片描述

取消异常后,原表中的数据都被删除,写入新的数据
这里写图片描述

事务操作的好处就在我们完成一系列操作的时候,防止因为异常的发生导致数据的丢失。就好比你支付宝转账给你盆友,结果中途出现了异常导致,你的支付宝的钱是被扣了,但是你盆友的支付宝了金额并没有增加,那岂不是很DT。哈哈。

升级数据库的最佳写法

之前一篇中数据升级是在onUpgrade()方法中删掉当前所有的表,然后强制执行onCreate()方法,实现数据库升级。
我们都知道只要指定数据库的版本号比当前的数据库版本号高的时候就会进入到onUpgrade()中,这我先在onUpgrade()中先判断当前数据库的版本号,再执行相应的改变操作。

首先第一个版本(就是之前创建的两个表):
先将虚拟机上的APP删除掉

publ
  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值