與大多數開發人員不希望覆蓋sqlite數據庫中的數據的sqlite應用程序不同,我試圖啓用應用程序以覆蓋所有數據以便將來更新。 sqlite數據庫將具有完全相同的名稱並具有相同的表,我只是希望能夠更新數據庫中包含的數據,而不會讓用戶刪除應用程序並重新安裝它。有沒有簡單的方法來做到這一點?試圖在iPhone應用程序更新中覆蓋sqlite數據庫
在此先感謝!
與大多數開發人員不希望覆蓋sqlite數據庫中的數據的sqlite應用程序不同,我試圖啓用應用程序以覆蓋所有數據以便將來更新。 sqlite數據庫將具有完全相同的名稱並具有相同的表,我只是希望能夠更新數據庫中包含的數據,而不會讓用戶刪除應用程序並重新安裝它。有沒有簡單的方法來做到這一點?試圖在iPhone應用程序更新中覆蓋sqlite數據庫
在此先感謝!
SQLite數據庫文件只是一個普通的文件,所以不需要特殊的步驟。獲取文件的路徑或URL,並使用NSFileManager的-removeItemAtPath:error:
或-removeItemAtURL:error:
。然後以與創建舊數據庫相同的方式創建新數據庫。
謝謝湯姆。因此,對於預加載信息的現有數據庫,我只需要插入-removeItemAtPath:error :,每次更新都會刪除舊數據庫並將其替換爲新版本? – Benjamin 2011-03-11 00:55:29
這將刪除舊的。用新的替換它取決於你,但你之前做過,所以你可以再做一次。每次調用該方法時都會發生,因此只有在實際需要刪除舊副本時才需要注意。這假定數據庫在文檔文件夾中,而不是在應用程序包中。如果它在應用程序包中,它會在每次更新時自動覆蓋,但用戶也無法修改它。 – 2011-03-11 01:55:33
對不起,這可能是一個愚蠢的問題,但我如何將數據庫放在應用程序包中?我沒有想過這個簡單的解決方案。用戶不會修改或保存數據,因此這將是我認爲的最佳解決方案。 – Benjamin 2011-03-11 03:26:00
請點擊此鏈接 從包重命名你的數據庫名稱
我不知道它是如何工作的本地代碼,但你不能只是'truncate'表和'insert'您記錄? – 2011-03-10 23:08:20