我有一個升級我的sqlite數據庫的小問題。現在我使用的是這樣的:Android升級sqlite數據庫問題
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("","UPGRADE DATABASE : "+" oldVErsion : "+oldVersion+" newVersion : "+newVersion);
switch(newVersion){
case 2:
Log.w("","UPGRADE DATABASE : "+newVersion);
db.execSQL("ALTER TABLE collection_lang ADD COLUMN bonus_text VARCHAR(200)");
db.execSQL("ALTER TABLE collection_lang ADD COLUMN quantity integer");
case 3:
Log.w("","UPGRADE DATABASE : "+newVersion);
db.execSQL("ALTER TABLE users ADD COLUMN firstName varchar(70)");
db.execSQL("ALTER TABLE users ADD COLUMN lastName varchar(70)");
db.execSQL("ALTER TABLE users ADD COLUMN user varchar(70)");
}
}
它的工作,如果你已經擁有了從beggining..but安裝的應用程序,如果你現在安裝它,它只會在case 3
運行查詢,因爲目前的版本是3
我需要找到一種方法來從頭開始運行查詢..如果我的最後一個版本的數據庫是5,我想首先運行情況2,而不是情況3,而不是最後一種情況5。因此,我不需要從頭開始編寫所有查詢,因爲它會爲舊用戶崩潰。
任何想法如何實現這一目標?
我已經嘗試過this..but有另一個問題。如果是全新安裝,新用戶將直接進入版本3,這是正確的..但是如果用戶已經擁有第二版數據庫,並且當他嘗試升級到版本3時,它會拋出異常,因爲他已經擁有了'bonus_text'和'quantitiy'列。 – 2012-02-02 09:44:56
我已添加更新。 – Yury 2012-02-02 09:51:18
感謝您的更新answer.it工程! – 2012-02-02 10:15:36