【发布时间】:2014-03-18 08:56:21
【问题描述】:
我的升级想法的数据库助手:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "myapp.db";
private static final int DATABASE_VERSION = 11;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) { /* ... */ }
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion) {
case 1: upgradeToSecond(db);
case 2: upgradeToThird();
case 3: upgradeToFourth();
// ...
case 10: upgradeToEleventh();
}
}
private void upgradeToSecond(SQLiteDatabase db) { /* ... */ }
private void upgradeToThird(SQLiteDatabase db) { /* ... */ }
private void upgradeToFourth(SQLiteDatabase db) { /* ... */ }
// ...
private void upgradeToEleventh(SQLiteDatabase db) { /* ... */ }
}
感谢 without breaks 的开关,无论用户以前使用什么版本,数据库架构都会逐步更新到最新版本。如果oldVersion 为8,则升级方法upgradeToNinth(db)、upgradeToTenth(db) 和upgradeToEleventh(db) 将运行。太好了!
但此代码假设newVersion 的值始终是数据库的最新版本(提供给SQLiteOpenHelper 构造函数的值)。这总是真的吗?有没有使用newVersion 调用onUpgrade 方法而不是最新方法的情况?
【问题讨论】:
标签: android android-sqlite sqliteopenhelper