2012-02-19 64 views
5

請原諒我,如果這個問題已經得到解答 - 我搜索並找不到它。更新Android應用程序的策略(帶數據庫)

我有一個Android應用程序,我想升級,它使用SQLite數據庫。我想更新應用程序中的一些應用程序邏輯,但是不會更新數據庫模式或內容。我基本上需要保持數據庫完全按照用戶的原樣。

我是否需要在onUpgrade中執行任何操作以確保數據庫保持不變或者我可以爲此更新單獨保留數據庫內容?

回答

4

This related article may help you with your question。

我理解它的方法是,如果您想在不同版本之間進行更新,則需要將數據庫更改代碼置於onUpdate()中。但是,既然你不打算,並且可能保持數據庫版本相同,那麼你很可能根本沒有任何問題。

+1

這不是一個可能性問題。 sqlite將保留其版本之間的結構和數據。僅在版本之間。具有不同簽名密鑰的同一應用不訪問其先前佔用的沙箱,因此不管該沙箱是否仍然存在。 UPVOTED :) – 2016-11-04 11:24:54

5

onUpgrade()方法用於版本更改。這意味着存儲在手機中的數據庫需要更改或刪除或刪除,並創建一個新的數據庫。由於您的應用程序沒有任何這些要求,因此您可以將數據庫內容留給此更新。

+0

有點混亂,m8。我理解(並同意)你的意思,但它的寫法,聽起來像SQLite將在版本之間重新創建,情況並非如此。 – 2016-11-04 11:26:50

1

升級不會干擾SQLite。除非以編程方式(在onUpgrade方法中)或卸載並重新安裝應用程序,否則不會執行對數據庫結構的更改。

只要它是您正在升級的同一應用程序,您的數據庫不會受到影響,您的數據也不會受到影響。如果您更改用於構建apk的簽名密鑰,那麼您的數據庫將被重新創建。相反,如果您在任何給定點更改數據庫結構,您的onUpgrade方法將發揮作用。您將被迫備份,刪除,重新創建和重新填充版本之間已更改的表(其他表在結構和數據中均保持不變)。

注:在調試中,我只是卸載並重新安裝應用程序,每次我做數據庫更改,但在生產中,你不想這樣做。