在Android中处理SqLite的多个升级(ALTER与CREATE)

时间:2016-03-13 05:25:12

标签: android sqlite android-studio

当递增版本号时,会为SQLite调用onUpgrade(),因此通常你会得到一个create-table SQL语句和一个alter-table SQL语句。

如果有多个版本,您是否需要声明多个alter-table语句?

2 个答案:

答案 0 :(得分:2)

onUpgrade为您提供旧版本和新版本,您可以做任何您需要做的事情。这是一种方法:http://blog.adamsbros.org/2012/02/28/upgrade-android-sqlite-database/

    public void onUpgrade(
    final SQLiteDatabase db, final int oldVersion,
    final int newVersion)
{
    int upgradeTo = oldVersion + 1;
    while (upgradeTo <= newVersion)
    {
        switch (upgradeTo)
        {
            case 5:
                db.execSQL(SQLiteSet.V5_ADD_LAST_CARD);
                db.execSQL(SQLiteCard.V5_ADD_FAILED);
                break;
            case 6:
                db.execSQL(SQLiteSet.V6_ADD_IMPORT_TYPE);
                break;
            case 7:
                db.execSQL(SQLiteSet.V7_ADD_SHORT_FNAME);
                break;
        }
        upgradeTo++;
    }
}

答案 1 :(得分:0)

是的,您可能需要从任何给定版本号到当前版本的升级路径。 onUpgrade()为您提供了一种方法,因为它为您提供了旧版本号,您可以使用它来确定要执行哪些迁移以获得当前版本。