2011-05-19 45 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上我认为它不是-问题。保持开放似乎工作得很好,而且不用担心。