首页 > 解决方案 > SQLite / C API - 关闭数据库 - 是否有官方文档错误?

问题描述

在 API 调用的官方 SQLite 的 C API 文档 ( www ) 中,sqlite3_close()我可以阅读以下内容:

关闭数据库连接

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

sqlite3_close()sqlite3_close_v2() 例程是对象的析构函数sqlite3。如果 对象被成功销毁并且所有相关资源都被释放,则调用 sqlite3_close()sqlite3_close_v2()返回。SQLITE_OKsqlite3

如果数据库连接与未完成的准备好的语句或未完成的sqlite3_backup对象相关联,sqlite3_close() 则将保持数据库连接打开并返回SQLITE_BUSY

这两个带返回值int的函数如何返回字符串SQLITE_OKSQLITE_BUSY?这是不可能的。我在哪里可以捕获函数返回的字符串?我正在考虑像这样使用sqlite3_errmsg()www):

do{
    sqlite3_close(my_db);
}
while(strcmp(sqlite3_errmsg(my_db),"SQLITE_BUSY") == 0);

这会导致大量 API 调用,这可能会给数据库带来压力。有没有人有更好的解决方案?

标签: csqlite

解决方案


推荐阅读