對於SQLiteOpenHelper,如果我裏面添加onCreate
新表做我必須做的裏面onUpgrade
什麼?我正在添加一個全新的表格。我相信我必須更改版本號,但onUpgrade
應保持空白。那是對的嗎?添加新表的SQLite
回答
如果您希望應用程序的現有安裝添加此新表,那麼是的,您必須增加該版本並提供合適的onUpgrade()
實施,並在onCreate()
(您聲明您已完成)中添加該表, 。
空onUpgrade()
實現是不夠的;它必須實際做一些事情。有些人會刪除所有表格,直接撥打onCreate()
,但如果您想要保留現有數據,這顯然不起作用。我通常使用成熟的switch
成語,因此如果用戶不止一個版本(例如,您發佈版本3並且用戶仍在版本1上),他們將按順序執行所有必要的升級:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL("CREATE TABLE " + ...);
// no break statement, so case 2 will execute after this.
case 2:
// more execSQL(), etc
}
}
請注意,如果你只是在開發(所以沒有人有應用程序),你可以跳過升級,只做'onCreate()',但你必須刪除數據庫,以便重新創建。您可以通過卸載並重新安裝,或在設置>應用程序中查找應用程序並在其中清除其數據來完成此操作。 – Karakuri
只有在增加版本號時纔會調用onUpgrade。
要實現它,你必須重新創建你所做的任何更改表並複製了所有現有數據。這個主題有很多教程。
沒有必要來實現,如果你還在學習,但如果你不這樣做,你讓你的架構進行任何更改,您需要卸載從設備的應用程序或更改將不會被應用。如果用戶已經安裝您的應用程序之前
onCreate()
不會被調用。所以你也需要在onUpgrade()
中創建新表。一定要增加數據庫的版本號。
我建議把代碼放在一個輔助方法來創建表,這樣就可以從兩個回調方法調用它。如果您需要更改代碼以創建表格,這將減少發生錯誤的可能性。
好點。謝謝。 +1 –
- 1. 將新字段添加到sqlite表問題
- 2. SQLite數據庫:第二張表不會添加新產品
- 3. 刷新RecyclerView實時添加新的數據的SQLite
- 4. SQLite獲取最新添加的項自動增加的編號
- 5. 在SQLite中添加表格android
- 6. 將julian日期列添加到SQLite表
- 7. 添加SqLite到PHP5
- 8. 添加SQLite庫-ios5
- 9. 加入新行的sqlite
- 10. 核心數據添加一個新的字段到現有的sqlite表
- 11. 的Python + SQLite的:添加新的一列,並以2
- 12. android中的sqlite無法識別新的列我添加了
- 13. SQLite的Python不更新表
- 14. 添加/更新IEnumerable列表
- 15. 最新添加到表SQL
- 16. 添加新行到表
- 17. 在Azure上添加新表
- 18. Heroku添加記錄到sqlite
- 19. 將數據添加到SQLite
- 20. Android SQLite優化添加行
- 21. 從SQLite列添加數據
- 22. 使用SQLite中的子查詢添加更新記錄
- 23. 在sqlite中的現有列後添加新列
- 24. 如何添加一個新的列到Android SQLite數據庫
- 25. 在sqlite加入表
- 26. 將新添加的項添加到我的列表視圖中?
- 27. 添加新行後MongoDB React.js更新表
- 28. 添加新表後更新ormlite_config.txt
- 29. 嘗試將json的分析值添加到sqlite表中時出現Sqlite異常
- 30. sqlite更新(不加入)
您是否已經發布過您的應用程序的早期版本? –
是的,我有:)。 –