Android之Sqlite升级

Android中有四大存储方式:
1、Sqlite存储结构化数据
2、SharedPreferences以键值对形式存储数据
3、文件存储
4、网络存储,即上传至服务器
Sqlite作为四大存储方式之一,在实际当中我们可能经常会使用到。
Sqlite是Android内置的轻量级的数据库。
在实际开发当中,可能会遇到这种情况:当APP的一个新版本上线,需要本地Sqlite数据库表增加一个字段,直接增加,老用户如果不卸载重装,必然会造成程序崩溃。
那么怎么办呢?这里就涉及到数据库升级了。下面详细讲解:

我们用到了一个类SQLiteOpenHelper。首先创建一个类,继承SQLiteOpenHelper。
紧接着,重写onCreate(SQLiteDatabase db)、onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)、onOpen(SQLiteDatabase db)

onCreate(SQLiteDatabase db):当数据库被创建时回调的方法,数据库创建的同时创建数据表。增加字段也需要在这里增加字段,不然新用户安装会报错。
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库版本发生改变时回调的方法
onOpen(SQLiteDatabase db):当数据库被打开时回调的方法

好,我们回到上述问题,如何解决呢?
1、

    public MySqliteHelper(Context context) {
        //当数据库版本需要升级修改时,增加版本号
        super(context, DbUtils.DATABASE_NAME, null, DbUtils.DATABASE_VERSION);
    }

比如说:DATEBASE_VERSION之前为1,现在改成2
2、在onCreate方法中创建表时,增加需要增加的字段
3、

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (newVersion > oldVersion) {
            Log.i(TAG, "---onUpgrade---");
            switch (newVersion) {
                case 2:
                    db.execSQL("alter table " + DbUtils.TABLE_REPORT + " add " + DbUtils.STORE_ID + " varchar(30)");
                    break;
            }
        }
    }

如此,即可解决上述问题。

猜你喜欢

转载自blog.csdn.net/zdj_develop/article/details/77677235