【发布时间】:2013-11-05 10:39:07
【问题描述】:
最近我更新了我的android游戏,编辑sqlite数据库在我的表中添加了新字段,更新后,我收到了4个崩溃报告(其中3个来自同一设备,三星Galaxy S4)
android.database.sqlite.SQLiteException:无法从 版本 2 到 1 在 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);
}
}
谢谢。
【问题讨论】:
-
只有在设备安装了新版本并升级了数据库并且现在要回到旧版本时才会调用此方法。
标签: java android database sqlite