0
我試圖更新表的模式在onUpgrade()方法的過程中我的SQLite數據庫。我正在通過刪除表格然後用新模式重新創建表格來做到這一點。有時舊模式在這兩個操作運行後仍然存在,所以我需要一種方法來在創建新表之前強制刪除舊錶。有誰知道如何做到這一點?下面是代碼:如何強制SQLite數據庫的操作是同步的
database.execSQL("DROP TABLE IF EXISTS " + TABLE_ALARMS);
database.execSQL(buildAlarmTable());
舊模式:
private String buildAlarmTable() {
return "CREATE TABLE IF NOT EXISTS " + TABLE_ALARMS +
"(" + KEY_ALARM_ID + " INTEGER PRIMARY KEY NOT NULL," +
KEY_ALARM_NAME + " TEXT," +
KEY_ALARM_TIME + " INTEGER" +
")";
}
新的模式:
public String buildAlarmTable() {
return "CREATE TABLE IF NOT EXISTS " + TABLE_ALARMS +
"(" + KEY_ALARM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
KEY_ALARM_NAME + " TEXT," +
KEY_ALARM_TIME + " INTEGER," +
KEY_ALARM_MALID + " INTEGER" +
")";
}
我知道舊模式仍然存在,因爲我得到一個異常的 「KEY_ALARM_MALID」 列在稍後從數據庫讀取時不存在。
通常情況下,您只需更新您的SqliteOpenHelper類 –
數據庫版本號我不知道你問的同步行動,雖然。查詢SQLite數據庫的IO操作相當同步 –
爲了澄清,有時新創建的TABLE_ALARMS表將包含舊架構,該架構沒有新列。其他時候它會正確地擁有新的模式。這導致我認爲這些操作沒有同步發生 –