對於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. Android SQLite添加新列到表
- 2. Android sqlite - 只添加新記錄到表
- 3. SQlite更新添加一些
- 4. 添加新的不同活動後刷新SQLite列表
- 5. 新列添加到Android SQLite數據庫創建新表
- 6. sqlite沒有看到我添加到分區的新表
- 7. 在iOS中添加新列到SQLite
- 8. 如何在Sqlite數據庫中添加新表格
- 9. 在sqlite數據庫表中添加新條目
- 10. 將新字段添加到sqlite表問題
- 11. SQLite數據庫:第二張表不會添加新產品
- 12. Phpminiadmin - 添加新表
- 13. SQLite獲取最新添加的項自動增加的編號
- 14. 在SQLite中添加表格android
- 15. 從SQLite表中添加值到JSONObject
- 16. Sqlite:將註釋添加到表和列?
- 17. 在Android中向SQLite表添加一列?
- 18. 將julian日期列添加到SQLite表
- 19. 添加SQLite庫-ios5
- 20. 添加SqLite到PHP5
- 21. 更新SQLite表
- 22. SQLITE新表android
- 23. 在SQLite中的添加WHERE
- 24. 將一列添加到Android SQLite數據庫/添加表
- 25. 加入新行的sqlite
- 26. 核心數據添加一個新的字段到現有的sqlite表
- 27. sqlite:一旦添加新列,如何用值填充新列?
- 28. 的Python + SQLite的:添加新的一列,並以2
- 29. Android更新sqlite表
- 30. SQLite的Python不更新表
您是否已經發布過您的應用程序的早期版本? –
是的,我有:)。 –