2011-05-19 44 views
2

我寫使用SQLite(https://github.com/ccgus/fmdb)我的第一個MacOS的應用。Cocoa SQLite何時關閉數據庫?

我既可以打開/關閉數據庫聯接每筆交易(CRUD),或在初始化/的dealloc。什麼是最好的方法?

+0

答案只有一個,沒有評論,沒有票? – 2011-05-23 11:22:35

+0

檢查這[post](http://stackoverflow.com/questions/15720272/when-to-close-sqlite-database-using-fmdb?lq=1)和@ccgus建議保持打開狀態。 – Gon 2013-12-31 07:53:22

回答

-1

你不希望你的應用程序,以保持DB開放從開始到結束,除非它是所有啓動,做數據庫的東西,然後退出。原因是,在極少數情況下,應用程序可能會因系統問題,電力不足等而終止。由於SqLite是基於文件的,這可能會導致文件未關閉或其他一些不同步的情況。當你需要打開數據庫時打開數據庫,做你的事情,當你不再需要時打開數據庫。在你實際執行數據庫操作時,你無法防止崩潰,但是當你的最後一組數據庫運行時,你會發現數據庫是穩定的並且關閉了。就像旁邊一樣,SqLite打開和關閉很快。那麼,讓我修改一下:我已經編譯到我的應用程序中的SqLite3。我其實不知道其他版本。

0

我不知道我有明確的答案,但已經研究過這一點我自己,我見過無數誰的人說這是確定要離開打開數據庫。

另外,如果你看一下SQLite的網站,你會看到,他們已經做了很多工作,確保數據庫不會從崩潰,電源故障等

http://www.sqlite.org/testing.html

http://www.sqlite.org/atomiccommit.html損壞

我使用SQLite和FMDB經驗是它似乎是細到打開連接,只是把它打開。請記住,這是與文件的「連接」,位於閃存上的本地文件系統上。這與網絡連接完全不同。我認爲失敗的機會非常渺茫,因爲它明確設計用於處理崩潰,電源故障等,即使它們發生在實際的數據庫操作期間 - 因此在數據庫操作之外,它們不是問題。

當然你可能會認爲不使用數據庫連接時打開數據庫連接是不好的做法,我不會在典型的客戶端 - 服務器設置中推薦它,但在iPhone/iPad上我認爲它不是-問題。保持開放似乎工作得很好,而且不用擔心。