【SQLite数据库存储】事务、升级数据库

事务

SQLite 数据库是支持事务的,事务的特性可以保证让某一系列的操 作要么全部完成,要么一个都不会完成

那么在什么情况下才需要使用事务呢?想象以下场 景,比如你正在进行一次转账操作,银行会将转账的金额先从你的账户中扣除,然后再向收 款方的账户中添加等量的金额。看上去好像没什么问题吧?可是,如果当你账户中的金额刚 刚被扣除,这时由于一些异常原因导致对方收款失败,这一部分钱就凭空消失了!当然银行 肯定已经充分考虑到了这种情况,它会保证扣钱和收款的操作要么一起成功,要么都不会成 功,而使用的技术当然就是事务了

接下来我们看一看如何在 Android 中使用事务吧,仍然是在上一篇文章中的项目的基础上 进行修改 创建、升级数据库

比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可以 先使用 delete() 方法将Book表中的数据删除,然后再使用 insert() 方法将新的数据添加到表中。 我们要保证的是,删除旧数据和添加新数据的操作必须一起完成,否则就还要继续保留原来 的旧数据

修改 activity_main.xml中的代码

<Button
        android:id="@+id/replace_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Replace data" />

修改 MainActivity中 的代码

Button replaceData = (Button) findViewById(R.id.replace_data);
        replaceData.setOnClickListener(view -> {
   
            SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
            db.beginTransaction();//开启事务
            try {
   
                db.delete("Book", null, null);
                if (true) {
   
                    //这里手动抛出一个异常,让事务失败
                    throw new NullPointerException();
                }

                ContentValues values = new ContentValues();
                values.put("name", "Game of Thrones");
                values.put("author", "George Martin");
                values.put("pages"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值