SQLiteOpenHelper中的onDowngrade()(或降级时不会崩溃的另一种方式)

Dav*_*ave 4 java sqlite android

Java的新手.使用我的应用程序,并决定,我将我的DATABASE_VERSION降回到1(没有真正的原因).

当我启动应用程序时,它崩溃了,其中一个错误是:

E/AndroidRuntime(14905):引起:android.database.sqlite.SQLiteException:无法将数据库从版本17降级到4

E/AndroidRuntime(14905):在android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:307)

我已经有一个onUpgrade(),我删除表然后运行onCreate()...所以我想我会做一个onDowngrade():

@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    onUpgrade(db);
}
Run Code Online (Sandbox Code Playgroud)

但显然这不是我可以覆盖的超类方法.

是否有一种方法(希望简单的方式)允许我将数据库版本更改为我想要的任何数字并让它仍然运行而不会立即崩溃?

Com*_*are 10

是否有一种方法(希望简单的方式)允许我将数据库版本更改为我想要的任何数字并让它仍然运行而不会立即崩溃?

在开发过程中,只需通过"设置"中应用程序的"清除数据"按钮,或者从设置中卸载应用程序,或者擦除整个模拟器(如果这是模拟器),就可以删除数据库.您的数据库将在下次运行时通过调用创建重新给onCreate()SQLiteOpenHelper.

正如rciovati指出的那样,在生产中,支持降级的概念仅在API Level 11中引入,我从未亲自尝试过.