我有一個數據庫,我想添加一列,我改變了靜態數據庫版本,但是當我在我的設備上運行該程序的新列仍然不存在,所以我猜我的onUpdate
沒有被調用,我是不知道爲什麼。更新sqlite數據庫版本?
這是我怎麼回事創建數據庫
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
createTables(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w("CalendarDB", "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS Events_Table");
onCreate(db);
}
private void createTables(SQLiteDatabase db){
db.execSQL("CREATE TABLE " + EVENTS_TABLE + "(" + ID + " integer primary key autoincrement, " +
EVENT + " TEXT, " + LOCATION + " TEXT, " + DESCRIPTION + " TEXT, " + DATE + " TEXT, " + START + " LONG, " + END + " TEXT, " + REAL_START_TIME + " TEXT,"
+ REAL_END_TIME + " TEXT," + COLOR + " TEXT, " + BLINK + " TEXT, " + VIBRATE + " TEXT, " + RING_TONE_PATH + " TEXT, " + ICON + " TEXT, " + REMINDERS +
" TEXT, " + START_WITH_REMINDER + " TEXT, " + CALENDAR_ID + " TEXT, " + EVENT_ID + " TEXT);");
}
}
是有什麼我必須做的就是onUpdate
得到叫什麼?我嘗試以下this answer,但還是沒有結果
那麼我在哪裏調用getWritableDatabase呢?我應該在我的構造函數中調用它嗎? – tyczj 2011-12-24 23:17:22
無論你在哪裏使用它...我通常在我的ContentProvider中使用它,但如果你沒有它,它應該在你的代碼中流利地運行,任何你要插入或更新getWritableDatabase的地方必須是所謂的,它不是迫使它的使用。 – Necronet 2011-12-24 23:51:29
@tyczj〜「那麼我應該在哪裏調用getWritableDatabase呢?」我假設你正在使用SQLiteOpenHelper類來執行CRUD操作?在這種情況下,當您在代碼中獲取SQLiteOpenHelper的實例時,您將調用getWritableDatabase()。 – 2013-12-13 16:09:10