我在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
}
解决方法:
目前我使用以下内容:
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...
}
这种方式可确保以正确的顺序一个接一个地对数据库进行更改
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!