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