Cocoa 何时关闭数据库?

Cocoa 何时关闭数据库?,cocoa,macos,sqlite,Cocoa,Macos,Sqlite,我正在编写我的第一个使用SQLite的MacOS应用程序https://github.com/ccgus/fmdb. 我可以为每个事务CRUD打开/关闭数据库连接,也可以在init/dealloc上打开/关闭数据库连接。最好的方法是什么?你不希望你的应用程序从头到尾都保持数据库的打开状态,除非它所做的只是启动、执行数据库操作,然后退出。原因是,在极少数情况下,应用程序可能会因系统问题、断电等而终止。;由于SqLite是基于文件的,这可能会导致文件未关闭或其他一些不同步的情况。当你需要打开数据库时

我正在编写我的第一个使用SQLite的MacOS应用程序https://github.com/ccgus/fmdb.


我可以为每个事务CRUD打开/关闭数据库连接,也可以在init/dealloc上打开/关闭数据库连接。最好的方法是什么?

你不希望你的应用程序从头到尾都保持数据库的打开状态,除非它所做的只是启动、执行数据库操作,然后退出。原因是,在极少数情况下,应用程序可能会因系统问题、断电等而终止。;由于SqLite是基于文件的,这可能会导致文件未关闭或其他一些不同步的情况。当你需要打开数据库时打开它,做你的事情,当你不再需要打开它时关闭它。当您实际执行数据库操作时,您无法防止崩溃,但您必须确保在运行上一组数据库操作时,数据库是稳定和关闭的。作为旁白,SqLite的打开和关闭速度非常快。好吧,让我修正一下:我编译到我的应用程序中的SqLite3确实如此。实际上,我不知道其他版本。

你不希望你的应用程序从头到尾都保持数据库打开,除非它所做的只是启动、执行数据库操作,然后退出。原因是,在极少数情况下,应用程序可能会因系统问题、断电等而终止。;由于SqLite是基于文件的,这可能会导致文件未关闭或其他一些不同步的情况。当你需要打开数据库时打开它,做你的事情,当你不再需要打开它时关闭它。当您实际执行数据库操作时,您无法防止崩溃,但您必须确保在运行上一组数据库操作时,数据库是稳定和关闭的。作为旁白,SqLite的打开和关闭速度非常快。好吧,让我修正一下:我编译到我的应用程序中的SqLite3确实如此。实际上,我不知道其他版本。

我不确定自己是否有确切的答案,但我自己研究了一下这个问题,我看到很多人都说可以让数据库保持打开状态

此外,如果您查看Sqlite站点,您将看到他们在确保数据库不会因崩溃、电源故障等而损坏方面做了大量工作

我使用Sqlite和FMDB的经验是,打开一个连接并保持打开状态似乎很好。记住,这是一个连接到一个文件的连接,该文件位于闪存上的本地文件系统上。这与通过网络连接的情况截然不同。我认为失败的可能性非常小,因为它显然是为处理崩溃、电源故障等而设计的。即使它们发生在实际的数据库操作过程中——因此在数据库操作之外,它们也不是问题


当然,你可能会争辩说,在不使用时保持数据库连接打开是不好的做法,我不建议在典型的客户机-服务器设置中使用,但在iPhone/iPad上,我认为这不是问题。保持数据库的开放性似乎很好,而且不用担心。

我不确定自己是否有确切的答案,但我自己研究了一下,我看到很多人都说可以保持数据库的开放性

此外,如果您查看Sqlite站点,您将看到他们在确保数据库不会因崩溃、电源故障等而损坏方面做了大量工作

我使用Sqlite和FMDB的经验是,打开一个连接并保持打开状态似乎很好。记住,这是一个连接到一个文件的连接,该文件位于闪存上的本地文件系统上。这与通过网络连接的情况截然不同。我认为失败的可能性非常小,因为它显然是为处理崩溃、电源故障等而设计的。即使它们发生在实际的数据库操作过程中——因此在数据库操作之外,它们也不是问题


当然,你可能会争辩说,在不使用时保持数据库连接打开是不好的做法,我不建议在典型的客户机-服务器设置中使用,但在iPhone/iPad上,我认为这不是问题。保持开放似乎很好,而且不用担心。

只有一个答案,没有评论,也没有投票?检查此项,@ccgus建议保持开放。只有一个答案,没有评论,也没有投票?检查此项,@ccgus建议保持开放。