SQLite数据库存储之升级数据库

资料主要来源于郭霖《第一行代码》

如有侵权速与我联系 ### [email protected]

上一篇主要介绍了如何创建数据库

本篇介绍对数据库的升级,还是使用DataBaseDemo项目

    SQLiteOpenHelper抽象类的两个重写方法中,上一篇使用了onCreate(),而只剩下onUpgrade(),看方法名就知道意思就是对数据库的升级。如果你细心就会发现当你点击了创建数据库的按钮后,无论你点击多少次都不会弹出Toast提示。造成这个原因就是Restaurant.db数据库的存在使得onCreate()方法无法不会再执行,解决的办法就是卸载app然后重新安装。

    如此极端的方法官方肯定不会采用,因此官方提供了onUpgrade()方法。

    这次我们加入一个叫Restaurant的表:

private static final String CREATE_RESTAURANT = "create table Restaurant(" +
        " id integer primary key autoincrement," +
        " restaurant_name text," +
        " restaurant_location text) ";

    并在onCreate()中加入代码

sqLiteDatabase.execSQL(CREATE_RESTAURANT);

    想要升级数据库可以在onUpgrade()加入代码

 
 
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    sqLiteDatabase.execSQL("drop table if exists Menu");
    sqLiteDatabase.execSQL("drop table if exists Restaurant");
    onCreate(sqLiteDatabase);
}

    意思就是如果数据库中存在Menu和Restaurant表就执行删除,这样一来就可以让onCreate()方法得到执行。

    值得注意的是SQLiteOpenHelper的构造方法中第四个参数需要更改数据库版本号,比1更高就行,我改写成2吧。

    查看restaurant是否创建成功可以用adb调试工具。

   

    以上就是对数据库升级的操作。


猜你喜欢

转载自blog.csdn.net/zingfeng_sky/article/details/79516761