小. 快速. 可靠.
选择任意三个.

SQLite C Interface

Closing A Database Connection

int sqlite3_close(sqlite3*);
int sqlite3_close_v2(sqlite3*);

sqlite3_close()和sqlite3_close_v2()例程是sqlite3对象的析构函数. 如果sqlite3对象成功销毁并且所有关联资源都已释放,则调用sqlite3_close()和sqlite3_close_v2()会返回SQLITE_OK .

理想情况下,应用程序应在尝试关闭对象之前, 完成所有准备好的语句关闭所有BLOB句柄完成sqlite3对象关联的所有sqlite3_backup对象. 如果数据库连接与未完成的准备语句,BLOB处理程序和/或未完成的sqlite3_backup对象相关联,则sqlite3_close()将使数据库连接保持打开状态并返回SQLITE_BUSY . 如果使用未完成的准备语句,未关闭的BLOB处理程序和/或未完成的sqlite3_backups调用sqlite3_close_v2(),则无论返回什么, SQLite_OK都会返回SQLITE_OK ,但它不会立即取消分配数据库连接,而是将数据库连接标记为不可用的"僵尸",并对在完成所有准备好的语句,关闭所有BLOB句柄并完成所有备份之后,自动取消分配数据库连接. sqlite3_close_v2()接口旨在用于垃圾回收的宿主语言,并且调用析构函数的顺序是任意的.

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

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

另请参见对象常量函数的列表 .

by  ICOPY.SITE