6

最近我更新了我的 android 游戏,编辑 sqlite 数据库在我的表中添加了新字段,更新后,我收到了 4 个崩溃报告(其中 3 个来自同一设备,Samsung Galaxy S4)

android.database.sqlite.SQLiteException:无法在 android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:361) 的 android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java: 255) 在 android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)

我真的不明白可能是什么原因,甚至可以开始降级数据库,而实际上需要在我的最后一个数据库中升级。

在更新期间,我显然将 DATABASE_VERSION 值从 1 增加到 2

我没有覆盖 onDowngrade 方法,我的 onUpgrade 如下所示:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
    updateToVersion2(db, oldVersion, newVersion);
}

private void updateToVersion2(SQLiteDatabase db, int oldVersion, int newVersion)
{
    if (oldVersion <= 1)
    {
        ContentValues cv1 = new ContentValues();
        cv1.put(FIELD_WORLD_ID, 6);
        cv1.put(FIELD_MAX_UNLOCKED, 1);
        db.insert(TABLE_LEVELS, null, cv1);
    }
}

谢谢你。

4

1 回答 1

3

问题是您没有覆盖该onDowngrade方法。如javadoc中所述,您需要这样做,否则您将遇到异常:

如果没有被覆盖,默认实现将拒绝降级并抛出 SQLiteException

于 2013-11-05T10:51:35.013 回答