如果我只想在我的用户升级他们的应用程序时更新数据库行,那么你会在我的数据库处理程序类中的OnUpgrade方法中执行它,还是将它作为基于SharedPreferences的Application类中的asyncTask执行?
谢谢
答案 0 :(得分:2)
应用程序中数据库更新的典型设计模式类似于下面的代码,每次更新需要更改数据库的应用程序时,都会破坏SQLiteOpenHelper派生类中使用的数据库版本。
当然,这假设您使用SQLiteOpenHelper来管理在您的提供程序中获取对SQLite DB的引用:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == 1) {
// DO WORK TO UPGRADE FROM VERSION 1 to 2
oldVersion += 1;
}
if (oldVersion == 2) {
// DO WORK TO UPGRADE FROM VERSION 2 to 3
oldVersion += 1;
}
if (oldVersion == 3) {
// DO WORK TO UPGRADE FROM VERSION 3 to 4
oldVersion += 1;
}
}
这允许任何用户从任何先前版本升级到当前版本,并确保以正确的顺序进行所有更改。因此,它只会执行一次,因为在下一个版本中,数据库版本会变得更高。