iphone 當應用程序更新時不要更換舊的數據庫




ios doc (3)

它將取代新的數據庫,因為當你為你的應用程序創建二進製文件時,它將與新的數據庫一起構建。

如果你想用舊的數據庫來做,你必須在你的應用程序中創建與舊的數據庫。

在我的應用程序中,我正在使用sqlite數據庫,我不想在應用程序商店更新應用程序時替換現有的數據庫。

它會取代新的數據庫? 還是會保持相同的數據庫?


下一次你的新應用程序連接到數據庫,你將不得不檢測到它需要更新,那麼你需要運行一系列的sql命令或腳本來拉它(希望在後台線程異步) 。

什麼我的sqlite包裝做的:

  1. 將一系列sql腳本存儲在資源中。
  2. 我有一個引用要運行的腳本列表的文件。
  3. 對於新的數據庫,它只是按順序運行這些腳本。
  4. 每個腳本運行時,我都會在跟踪元數據表中記錄運行的最後一個腳本。
  5. 當應用程序更新(或在我的研發過程中)時,連接時,它會檢測到最新的腳本不是表中的一個。 然後迭代腳本,只運行已經運行的腳本。

這服務於我的更新,而且日常開發,而不會不斷丟棄數據。


@Ankit:嗨..

答案是否定的,它不會取代數據庫,它將保持舊的數據庫為已經使用以前版本的應用程序的用戶,然後他們只是下載並安裝新版本的應用程序,而不刪除以前的版本。

它將取代App Store上的數據庫,但如果用戶使用以前版本的應用程序,則默認情況下它不會替換數據庫。 如果數據庫已經存在,那麼它不會取代數據庫過程

我們必須做一個數據庫升級過程 ,在這個過程中我們必須檢查數據庫中的某個標誌或版本號(如果提供的話),並且基於這個標誌我們必須創建一個數據庫升級過程。

您必須使用數據庫升級過程對數據庫進行更改,並對現有表進行更改(如添加或刪除列),或者可能正在使用SQL查詢更改表的結構。

然後,你必須最終更新版本號或數據庫中的某個標誌,讓它知道數據庫已經升級,所以每次應用程序加載時都不應運行相同的過程

此外,重要的是您需要處理用戶存儲在其數據庫中的現有數據。 它不應該被刪除。

如果您需要更多幫助,請隨時與我聯繫。

希望這可以幫助。





ios4