【发布时间】:2013-01-22 10:31:35
【问题描述】:
我对 FMDB 包装类的数据库打开和关闭操作感到困惑。
如果我在其中打开数据库是否会产生问题 AppDelegate 类的 applicationDidFinishLoading 方法 并且在应用程序终止之前不要关闭?
谢谢。
【问题讨论】:
我对 FMDB 包装类的数据库打开和关闭操作感到困惑。
如果我在其中打开数据库是否会产生问题 AppDelegate 类的 applicationDidFinishLoading 方法 并且在应用程序终止之前不要关闭?
谢谢。
【问题讨论】:
除非您更改架构,否则没有理由关闭它。所以保持开放。
【讨论】:
来自官方 FMDB 文档:
开幕
在与数据库交互之前,必须先打开它。如果没有足够的资源或权限来打开和/或创建数据库,则打开失败。
if (![db open]) {
[db release];
return;
}
结束
当您对数据库执行完查询和更新后,您应该关闭 FMDatabase 连接,以便 SQLite 放弃它在操作过程中获取的任何资源。强>
[db close];
因此,每次查询数据库时,您的数据库都应该有一对open 和close 调用。
简而言之,当您需要数据库中的内容时打开数据库连接,并在使用完数据库后关闭它。
【讨论】:
SQLite will relinquish any resources it has acquired during the course of its operation.,从文档中,如果您不关闭连接,SQLite 获取的资源将不会被释放,您的应用程序将出现内存问题。