最近我更新了我的android游戏,在我的表中添加了新字段,编辑sqlite数据库。更新后,我收到了4份崩溃报告(其中3份来自三星Galaxy S4)。
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) android.database.sqlite.SQLiteException:不能将数据库从版本2降为1
我真的不明白是什么原因,当它甚至可以开始降级数据库,而它实际上需要升级在我的上一个数据库。
在更新过程中,我明显地将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);
}
}谢谢。
发布于 2013-11-05 10:51:35
问题是,您没有覆盖onDowngrade方法。正如在javadoc中所解释的,您需要这样做,否则您将得到一个异常:
如果不重写,默认实现将拒绝降级并抛出SQLiteException。
https://stackoverflow.com/questions/19786988
复制相似问题