我正在尝试更新 Android 应用程序中的数据库。当我更新版本号时,会调用onUpgrade,但版本号不会增加,因此每次访问数据库时,都会调用onUpgrade。这是我的代码:
private final static int DB_VERSION = 8;
public DataBaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.myContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "in onCreate");
try {
copyDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d(TAG, "in onUpgrade. Old is: " + oldVersion + " New is: " + newVersion);
myContext.deleteDatabase(DB_NAME);
Log.d(TAG, "the version is " + db.getVersion());
db.setVersion(newVersion);
Log.d(TAG, "the version is " + db.getVersion());
onCreate(db);
}
有谁知道为什么会发生这种情况?
不要尝试手动设置版本。 (这一切都已处理完毕。)
不要尝试删除数据库。您正在升级它,手动设置刚刚删除的数据库版本效果不佳,这并不会让您感到惊讶。
所有你应该做的onUpgrade
是对表的结构进行所需的更改。如果您想通过删除当前表(而不是数据库)然后重新创建它们来完成此操作,那就没问题了。
如果您需要保留表中的数据,请查看此问题以获取有关如何执行此操作的建议:将 SQLite 数据库从一个版本升级到另一版本? https://stackoverflow.com/questions/3424156/upgrade-sqlite-database-from-one-version-to-another
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)