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无论如何,而是将数据库连接标记为不可使用的“僵尸”,而不是立即取消分配数据库连接,并安排在所有准备好的语句完成,所有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()是无害的操作。