有一种方法可以在安装新版本时删除旧版本的应用程序



因为我的新版本应用程序是生成新的数据库。但旧版本相同的数据导致了问题。

所以我需要卸载旧版本,只保留当前版本。我可以知道实现我的目标的正确方法是什么吗?

在SQLiteHelper子类中实现onUpgrade方法。

数据库升级

SQLiteOpenHelper实现的构造函数应该调用超级构造函数,传递数据库名称和版本。只有当版本整数为大于模拟器中运行的当前版本。如果你愿意要调用的onUpgrade()方法,需要增加版本代码中的数字。

SQLiteHelper代码保留传递给构造函数的VERSION字段,并将其保存在数据库中。当您需要更改模式时,可以递增此整数。

upgrade应用程序后,应用程序中的版本号高于"disk"数据库中的版本编号,SQLiteHelper代码会注意到,并使用旧版本号和新版本号调用+onUpgrade()+方法。

您应该知道每个版本之间发生了什么变化,并相应地update数据库模式。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Your Staff
    onCreate(db);
}

检查SQLiteOpenHelper onUpgrade()混淆Android

请阅读官方指南。

http://developer.android.com/intl/es/reference/android/database/sqlite/SQLiteOpenHelper.html#onUpgrade(android.database.sqlite.SQLiteDatabase,

int,int)

除非用户在安装新应用程序之前手动卸载应用程序,否则无法在安装新的应用程序之前以编程方式卸载应用程序。

最好的解决方案是在sqlite助手类的onUpgrade方法中升级数据库。使用此功能可以删除、更新表&表数据(无论您想做什么!)。

检查这个答案&这个页面如何升级

如果使用Sqlite数据库,则在不卸载旧版本应用程序的情况下使用onUpgrade方法更改数据库。

请查看链接:-https://thebhwgroup.com/blog/how-android-sqlite-onupgrade

如果你的旧版本的应用程序已经有了数据库,并且你在新版本中更改了数据库结构,那么你应该在SQLiteOpenHelper的"onUpgrade"方法中编写适当的代码来更新数据库。

若要获得升级调用,您需要增加数据库的版本。如果你更改了版本号,那么android会识别出你的数据库已经更改,因此它将成为SQLiteOpenHelper的onUpgrade方法,在onUpgrade中,你可以通过删除旧表或将旧表修改为新结构来编写代码来更改DB结构。

这是数据库版本控制的最佳实践,您应该遵循这一点。有关如何升级数据库的更多详细信息,请参阅此处。

最新更新