我在Google Play商店中有一个应用,我正在研究它的新版本。 SQLite数据库方案(新表)+新的ContentProviders将会发生变化。
我考虑如何正确解决数据库结构的升级问题,以便用户在升级我的应用程序时不会丢失其当前内容,并且还会创建新表。
我应该改变: * private static final int DATABASE_VERSION = 1; 至: private static final int DATABASE_VERSION = 2; *
并以某种方式在onUpgrade()方法中放置代码,如果检测到oldVersion为1且newVersion为2.将创建新表。
现在我有一些愚蠢的代码,如果已经调用了onUpgrade,数据库已被销毁并重新创建......但我认为这个方法从未被调用,因为DATABASE_VERSION没有被更改。我只是在测试时卸载并重新安装应用程序。
最佳做法是什么?
private static final int DATABASE_VERSION = 1;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
enter code here
}
答案 0 :(得分:3)
目前我使用以下内容:
private static final int DATABASE_VERSION = 3;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion < 2)
//changes added in DBv2
}
if(oldVersion < 3)
//changes added in DBv3
}
//so on...
}
这样可以确保以正确的顺序一个接一个地对数据库进行更改