我想通過向我的android應用程序的Sqlite表中添加一列來升級某個表。我在DBHelper的onUpgrade方法中添加了一個alter table語句。Android onUpgrade每次都會被調用
以下是我看到的問題 我將數據庫版本的值從1更改爲2,所以最好現在onUpgrade應該被調用。它確實被調用,但每次實例化類時都會調用它。結果我得到一個列已經存在錯誤。
這裏是onUpgrade方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.d("old Version",oldVersion+"");
Log.d("New Version",newVersion+"");
db.beginTransaction();
try
{
String DATABASE_UPGRADE;
DATABASE_UPGRADE="alter table "+DATABASE_TABLE_MESSAGES+" ADD COLUMN "+ IS_READ+ " integer DEFAULT 0;";
db.execSQL(DATABASE_UPGRADE);
Log.d("upgrade", "Successful");
db.setTransactionSuccessful();
}
finally
{
db.endTransaction();
}
}
}
我很奇怪,爲什麼onUpgrade被每次叫!
我不知道,但我願意打賭,版本沒有正確更新數據庫(我不明白爲什麼)。要檢查數據庫的版本,可以使用'db.getVersion()'。 – dmon 2011-05-27 14:46:53
onUpgrade方法中有2條log.d語句,它們分別顯示1和2的值。因此數據庫版本爲1.我可能需要刪除數據庫並重試... – Rupin 2011-05-27 14:57:45