如果仅在用户升级他们的应用程序时仅想更新一次数据库行,那么您将在数据库处理程序类的OnUpgrade方法中执行此操作,还是在基于SharedPreferences的Application类中将其作为asyncTask执行?

谢谢

最佳答案

应用程序中数据库更新的典型设计模式类似于下面的代码,并且每次在需要更改数据库的应用程序中进行更新时,都会破坏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;
    }
}


这允许任何用户从任何先前版本升级到当前版本,并确保所有更改均以正确的顺序进行。因此,它只会执行一次,因为在下一个版本中,数据库版本会更高。

07-27 23:50