我正在使用sqlite创建一个应用程序。我正在数据库Insert, Update, Delete, Select上执行所有类型的任务。

为此,我每次都打开数据库,然后使用sqlite3_step()执行查询,并在结果之后使用sqlite3_finalize()sqlite3_close()方法。在大多数情况下,它运行良好。我没有得到它发生的时间,但是有时我的数据库被锁定,遵循的过程与我所遵循的过程相同。

我需要解锁数据库,因此即使在任何情况下我的数据库都被锁定了,也可以解锁它,或者如果我可以通过代码检查数据库是否被锁定,则可以请我指导我,以便可以用资源数据库替换数据库。

我也使用网络服务,所以我没有关于数据丢失的问题。
如果我的数据库被锁定或者有什么方法可以解锁数据库,那么替换它是否有意义?

最佳答案

一开始就打开数据库。最后在AppWillterminate函数中将其关闭。通过在每个数据库函数中打开和关闭它,您只消耗时间。

就数据库锁而言,当某些应用程序仍在使用它而其他应用程序试图获得其访问权限时,它将被锁定。

这可能是您的应用程序,也可能是您的Firefox的sqlite管理器插件。

我曾经遇到过同样的问题,而我所做的是


禁用sqlite附加组件中的选项,该选项可记住先前打开的数据库。
重新启动xcode,模拟器。
复制sqlite文件(桌面),将其从项目中删除,然后从桌面再次添加项目。


最后的解决方案听起来很奇怪,但是那时候我很生气。

希望对您有所帮助。

10-07 19:54
查看更多