如果 sqlite3_open() 返回错误和有效的数据库连接怎么办?

Posted

技术标签:

【中文标题】如果 sqlite3_open() 返回错误和有效的数据库连接怎么办?【英文标题】:What if sqlite3_open() returns an error AND a valid database connection? 【发布时间】:2013-03-09 16:47:54 【问题描述】:

sqlite3_open() 的文档是这样说的:

“通常在 *ppDb 中返回一个数据库连接句柄,即使发生错误。”

这是否意味着如果 sqlite3_open() 返回的不是 SQLITE_OK 和一个非空数据库句柄,那么您在再次尝试 sqlite3_open() 之前欠一个 sqlite3_close()?

如果是这样,这可以解释我遇到的问题,因为数据库被锁定而随机无法打开。

【问题讨论】:

【参考方案1】:

是的,如果 sqlite3 连接对象返回为非 null,则需要关闭它。

sqlite3_open() manual 很清楚;

无论打开时是否发生错误,与数据库连接句柄关联的资源都应在不再需要时通过将其传递给 sqlite3_close() 来释放。

至少,如果您不这样做,您将有sqlite3 连接对象本身的内存泄漏,因为sqlite3_close() 会释放该对象以及分配给它的所有资源。

【讨论】:

以上是关于如果 sqlite3_open() 返回错误和有效的数据库连接怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

sqlite3_open - '数据库无法打开'

我的二进制搜索有效,但返回错误的索引

我需要帮助来验证 jwt 是不是有效或以其他方式创建一个新的,如果发送的令牌不正确,则在 nestjs 中间件中返回错误

通过spring security进行的Active Directory身份验证会返回由LDAP引起的有效用户的错误凭据:错误代码49

使用 RcppArmadillo 在矩阵的列上应用函数有效,但在应用于行时返回错误

axios发布请求不返回响应错误