2009-08-22 62 views
1

我已經從命令行創建了一個sqlite3數據庫並插入了幾條記錄。我的應用程序檢索所有這些並顯示它們很好。然後我通過sqlite3 cli返回並插入更多記錄,將db文件從模擬器的文檔目錄中清除,以便從主包中重新複製,然後再次運行應用程序,僅發現它僅顯示我插入的原始記錄。新記錄不顯示。我驗證了新的db文件被複制到模擬器文檔目錄中,當我將sqlite3 cli指向它時,我可以執行select *並查看所有記錄。無法刷新i​​phone sqlite3數據庫

這裏可能會發生什麼?它幾乎看起來好像以前的版本的數據庫文件被緩存在某處,而不是我的更新版本。

//斯科特

回答

2

每當您在xcode中重建並運行應用程序時,它會在iphone模擬器的應用程序文件夾下創建一個新文件夾。如果您的sqlite數據庫包含在xcode中,那麼舊數據庫可以放在新文件夾中,而您編輯的數據庫位於舊的和現在未使用的文件夾中。

+0

xcode把這些新文件夾放在哪裏?我只知道projectname/build/Debug-iphonesimulator/projectname.app – skantner 2009-08-22 12:11:53

+1

我發現它:/ Users/username/Library/Application Support/iPhone Simulator/User/Applications / – skantner 2009-08-23 02:32:14

0

我還沒有證實他的答案,但Stephan Burlot said

SQLite的用來請求緩存。關閉&重新打開數據庫以釋放緩存內存。

(我不認爲這是真的,每一個SQLite的實例緩存請求,但可能是iPhone上的情況。)

顯然,你是不關心的內存,但如果是緩存請求,也許只是一個關閉,然後重新打開就是你所需要的。

如果情況並非如此,我的下一個猜測是,您的應用程序沒有指向該文件是否認爲這是指向 - 你擁有它指向一個不同名稱的數據庫在一個點和忘記更新應用程序?您可以通過從您的應用程序中更新數據庫來驗證這一點,然後使用CLI檢查這些更新。你可能會發現他們沒有看同一個數據庫。