我正在使用带有sqlite3的C程序。 有时插入作品。但有时,它不起作用。 断言(retval == SQLITE3_OK) 给出错误。在调试时我发现sqlite3_step()的retval值是错误代码= 5 这是指数据库文件繁忙 即使用sqlite3_close()关闭也会返回错误代码5。
关于如何关闭数据库连接的任何想法,即使它很忙?
答案 0 :(得分:0)
您可能正处于交易中。请尝试查看http://www.sqlite.org/c3ref/get_autocommit.html,了解sqlite3_get_autocommit()
的工作原理。如果它不在自动提交中,它应返回零,这意味着存在打开的事务。
或者,如果您怀疑数据库可能仍在处理某些内容,则可以使用sqlite3_busy_timeout()
来设置计时器。 http://www.sqlite.org/c3ref/busy_timeout.html