java - Sqlite - 降级

标签 java android database sqlite

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

android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1 at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:361) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:255) at 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);
    }
}

谢谢。

最佳答案

问题是您没有覆盖 onDowngrade 方法。如 javadoc 中所述,你需要,否则你会得到一个异常(exception):

If not overridden, default implementation will reject downgrade and throws SQLiteException

关于java - Sqlite - 降级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19786988/

相关文章:

java - Eclipse 中没有输出

java - 为 Spring session 和自定义数据使用不同的 Redis 数据库

android - Twilio 拨出电话不工作,它自动终止

javascript - 使用 PHP 将注释添加到数据库中(使用 AJAX 防止页面重新加载)

php - MySQL 语法错误

Java 并发和多线程

java - 如何确定 Java 字符串的子字符串是否与正则表达式匹配?

java - 如何设置android状态栏的标题居中

android - 在应用程序关闭时截取设备屏幕截图

PHP - Laravel 5 从 3 个以 DATA 列为标题的 SQL 数据库表中获取数据到 html 表