4

对 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);
}

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

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

4

1 回答 1

10

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

在开发中,只需通过“设置”中应用程序的“清除数据”按钮,或通过从设置中卸载应用程序,或擦除整个模拟器(如果这是一个模拟器)来删除你的数据库。您的数据库将在下次运行时通过调用onCreate()在您的SQLiteOpenHelper.

正如 rciovati 所说,在生产中,支持降级的概念仅在 API 级别 11 中引入,我从未亲自尝试过。

于 2012-07-06T16:50:22.617 回答