在线文档教程
Sqlite
C界面 | C Interface

Closing A Database Connection

Closing A Database Connection

int sqlite3_close(sqlite3* int sqlite3_close_v2(sqlite3*

sqlite3_close() 和 sqlite3_close_v2() 例程是 sqlite3 对象的析构函数。对 sqlite3_close() 和 sqlite3_close_v2() 的调用将在 sqlite3 对象被成功销毁且所有关联资源被解除分配时返回SQLITE_OK。

如果数据库连接与未完成的预准备语句或未完成的sqlite3_backup对象相关联,则 sqlite3_close() 将使数据库连接保持打开状态并返回SQLITE_BUSY。如果使用未完成的预准备语句和/或未完成的sqlite3_backups调用 sqlite3_close_v2(),则数据库连接将变成不可用的“僵尸”,当最后一个预准备语句完成或最后一个sqlite3_backup完成时,它将自动解除分配。sqlite3_close_v2() 接口旨在与垃圾回收的主机语言一起使用,并且其中析构函数的调用顺序是任意的。

应用程序应该结束所有准备好的语句,关闭所有BLOB句柄,并在试图关闭对象之前完成与sqlite3对象关联的所有sqlite3_backup对象。如果在数据库连接上调用sqlite3_close_v2(),而这个数据库连接仍然有未完成的准备语句、BLOB句柄和/或sqlite3_backup对象,那么它将返回SQLITE_OK,并且资源的释放被延迟到所有准备语句、BLOB句柄和sqlite3_backup对象也被销毁。

如果在事务打开时销毁了sqlite3对象,则事务将自动回滚。

sqlite3_close(C)和sqlite3_close_v2(C)的C形参必须是一个NULL指针或一个从sqlite3_open(), sqlite3_open16()或sqlite3_open_v2()获得的sqlite3对象指针,并且之前没有关闭。使用NULL指针参数调用sqlite3_close()或sqlite3_close_v2()是无害的无操作。

See also lists of Objects, Constants, and Functions.

SQLite is in the Public Domain.

https://sqlite.org/c3ref/close.html