2011-10-09 73 views
0

我有一個關於android數據庫的問題。我有一個應用程序,它有數據庫資產folder.This應用程序已經安裝在手機上,工作正常。但現在我創建了另一個數據庫文件(只需增加前一個數據庫中的記錄數和其他所有內容都是相同的)。並將其重新放在資產文件夾中,並將其替換爲現有的數據庫文件,然後重新編譯該項目。現在在模擬器中,新數據庫正在加載並顯示數據庫中更新的內容。但是當我在手機中再次安裝應用程序時,我以前的數據庫顯示出來並且新的數據庫未加載。 但是,如果我從手機上卸載應用程序並重新安裝它,那麼新的數據庫顯示出來。在手機上的Android數據庫

問題:我只是希望如果我替換手機上預先存在的應用程序,應該加載新的數據庫,而不是卸載後重新安裝應用程序。 任何建議或幫助?

回答

0

在Android中,您必須使用onUpgrade函數從先前版本更新數據庫。這是因爲Android只會創建一次你的數據庫,從那時起它只會使用那個數據庫。因此,您必須將版本代碼分配給與舊版本不同的新數據庫,並使用onUpgrade實際執行對新數據庫的更改。所有從頭開始安裝的設備都沒有當前數據庫,因此他們正在爲它們創建新的設備。

+0

感謝您的回覆:onUpgrade方法將在我第一次啓動我的活動時調用。它與安裝應用程序有關?我的意思是如果我更換應用程序,那麼一切都應該被替換,包括資產文件夾中的數據庫 – Sunny

+0

要取代應用程序,你需要做一個完整的卸載。當你運行adb來安裝你的應用程序時,它實際上是在重新安裝,它不會清除存儲的應用程序數據。 – Bobbake4

0

我敢打賭,如果您在「設置」中清除了應用的數據並重新啓動它,它應該加載新的數據庫。原因是SQLiteOpenHelper將數據庫從APK中的assets文件夾複製到手機上應用程序的數據目錄(如果它尚不存在)。否則,它將加載手機上的一個。除非您每次都從資產文件夾專門訪問數據庫,否則它將使用緩存版本。

相關問題