我知道這是舊的文章,你肯定找到了解決辦法,但我發現這個問題的有效(upvoted)和它沒有得到答覆,這裏是我的2美分:
調用onUpgrade()
從onCreate()
應該工作(我沒有測試它),但有一個更好的方法來組織你的幫手(見下面的片段)。關鍵是這兩種方法都只是切入點。
public class SampleDBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "mydatabase";
private static final int DB_VERSION = 2;
public SampleDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
updateDatabase(db, 0, DB_VERSION);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
updateDatabase(db, oldVersion, newVersion);
}
private void updateDatabase(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 1) {
// Create 3 initial tables
}
if (oldVersion < 2) {
// Create the new table
}
}
}
這種輔助性的優勢:
- 你永遠需要改變
onCreate()
和onUpgrade()
方法,只有updateDatabase()
。
- 對於每一個新版本,你只需要:
- 增量DB_VERSION
- 添加新的部分
if (oldVersion < N) { // do the upgrade }
。
信用:從Head First Android Development強烈的啓發,黎明和大衛·格里菲斯,奧賴利,2015年
爲什麼創建'onCreate'只有三個表? –
感謝您的回覆。這只是一個例子。我想在我的應用程序中處理onUpgrade()方法 –