Ela*_*da2 11 java database sqlite android
我正在使用SQLite DB编写一个Android应用程序.
我进行了很少的实验,并将数据库版本从1更改为2.
然后我的数据库架构变得稳定,因为我没有发布应用程序,它是我自己使用的
我决定再次将版本更改为1.
我做了全新安装,一切正常.
但是第二次运行会抛出这个错误:
06-05 10:03:35.683: E/AndroidRuntime(9010): android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1
06-05 10:03:35.683: E/AndroidRuntime(9010):     at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:361)
为什么这样,毕竟我做了全新安装,DB也应该被删除了.没有?
如何将版本再次更改为1?
laa*_*lto 18
在以下情况下抛出此异常:
SQLiteOpenHelper构造函数的参数)onDowngrade() 未在代码中重写.你说新安装后第一次代码工作正常.确保没有其他代码可以将同一数据库文件的版本号再次提升到2.
小智 6
有同样的问题,我是这样解决的。
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  db.setVersion(oldVersion);
}
onDowngrade()如果您希望能够使用设备上的数据库运行应用程序,并且版本高于您的代码可以处理的版本,您可以自行重写。
这是默认实现onDowngrade():
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    throw new SQLiteException("Can't downgrade database from version " +
            oldVersion + " to " + newVersion);
}
如果您需要覆盖此方法,请同时阅读此问题。
如果不重写该方法,我们就无法在增加并执行后减少 SQLite 版本。所以你需要改回2或大于2:
public DatabaseHelper(Context context) {
   super(context, DB_NAME, null, 2);
}
如果您尝试更新表,可能需要通过3not2并且每次需要更新表时,您都需要增加版本(而不是减少)。
| 归档时间: | 
 | 
| 查看次数: | 22023 次 | 
| 最近记录: |