我實現了一個DBHelper對象,在OnCreate()初始化的時候會這樣處理。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table download_info(_id integer PRIMARY KEY AUTOINCREMENT, thread_id integer)");
}
也就說每次創建DBHelper對象都會去執行CREATE TABLE。經我測試,這樣不會重復創建表,或者創建新表將舊表覆蓋。
但是我記得以前在書上看過創建表之前好像要‘IF NOT EXISTS’的判斷才行。
我對這個就不是很了解了,網上也沒有相關資料。有沒有大大出來給我解釋一下?我已經知道答案是不會覆蓋舊表了,但是原理是什麼有人知道嗎???
數據庫是根據版本號更新的,而表是沒有對應的版本號的,所以表是對應數據庫的更新而更新的。
通過代碼發現只有onUpgrade()時候即newVersion > oldVersion才更新,而onCreate()調用的是
SQLiteDatabase的openOrCreateDatabase()的方法的