我正在制作一个使用 SQLite
数据库的 android 应用程序。我已经发布了它的一个版本,现在发布了第二个和第三个版本,假设我需要更改数据库表,例如添加/删除字段。
那么我该如何在 Android 中处理此升级。这里我不想像东西一样删除完整的表格,这里应该使用 Alter
来更新表格。
假设用户已经安装了我的应用程序的第一个版本,然后几天后我发布了下一个版本 1.1
并更改了数据库表 - 添加了一个字段,这里用户没有升级它,同时我再次发布1.2
又增加了一个字段
所以当这个用户将我的应用程序从版本 1
升级到版本 1.2
时,我如何处理这种情况,其中缺少版本 1.1
我添加的属性也遗漏了,这会产生问题。
有解决办法吗??
最佳答案
假设您使用的是 SQLiteOpenHelper
,只需增加数据库架构更改的任何待发布版本的数据库版本号。如果周围有较旧的数据库文件,您的 onUpgrade()
将被调用,以便您可以从任何旧版本迁移数据库。
例如,如果您的 1.0 数据库版本是 1,1.1 是 2,1.2 是 3,用户正在将版本 1.0 更新到 1.2。 onUpgrade()
在 oldVersion
设置为 1 且 newVersion
设置为 3 的情况下调用。从这些版本号中,您的代码可以确定需要什么完成,例如:
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
updateFrom1To2(db);
case 2: // fall-through
updateFrom2To3(db);
break;
default:
Assert.fail("You forgot to write code for oldVersion " + oldVersion);
}
}
关于android - 在 Android 中升级 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22904743/