因为我的新版本应用程序是生成新数据库。 但旧版本导致问题的数据相同。
所以我需要卸载旧版本只维护当前版本。可能我知道实现目标的正确方法是什么?
答案 0 :(得分:4)
在SQLiteHelper子类中实现onUpgrade方法。
数据库升级
您的SQLiteOpenHelper实现的构造函数应该调用 超级构造函数,传递数据库名称和版本。 仅当版本整数为时,才会调用onUpgrade()方法 大于模拟器中运行的当前版本。如果你想 要调用的onUpgrade()方法,需要增加版本 代码中的数字。
SQLiteHelper代码保留您传递给构造函数的VERSION字段,并将其保存在数据库中。当您需要更改架构时,可以递增此整数。
在您upgrade
应用程序之后,应用程序中的版本号高于"disk"
上数据库中的版本号,SQLiteHelper代码会通知,并调用+onUpgrade()+
方法使用新旧版本号。
您应该知道每个版本之间发生了什么变化,并相应地update
数据库模式。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Your Staff
onCreate(db);
}
检查SQLiteOpenHelper onUpgrade() Confusion Android
请阅读官方指南。
int,int)
答案 1 :(得分:1)
在安装新用户之前,无法以编程方式卸载应用程序,直到用户在安装新应用程序之前手动卸载应用程序。
最佳解决方案是使用sqlite帮助程序类的onUpgrade
方法升级数据库。使用此功能,您可以删除,更新表格和表数据(无论你想做什么!)。
答案 2 :(得分:0)
如果您使用Sqlite数据库,则使用onUpgrade方法更改数据库而不卸载旧版本的应用程序。
请检查链接: - https://thebhwgroup.com/blog/how-android-sqlite-onupgrade
答案 3 :(得分:0)
如果您的旧版本的应用程序已经拥有数据库并且您已在新版本中更改了数据库结构,那么您应该编写正确的代码以在SQLiteOpenHelper的“onUpgrade”方法中更新数据库。
要获得onUpgrade调用,您需要增加数据库的版本。 如果您更改版本号,那么android会识别您的数据库已更改,因此它将会调用SQLiteOpenHelper的onUpgrade方法,并且在onUpgrade方法中,您可以通过删除旧表或将旧表修改为新结构来编写代码来更改DB结构。
这是数据库版本控制的最佳实践,您应该遵循这一点。 有关如何升级数据库的更多详细信息,请参阅here。