sqlite3数据库被锁定

时间:2011-06-09 05:44:10

标签: iphone sqlite

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

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

我需要解锁数据库,所以即使在任何情况下我的数据库都被锁定然后我可以解锁它或Plz指导我,如果我可以通过代码检查我的数据库被锁定,所以我可以用资源数据库替换我的数据库。

我也在使用webservice,所以我没有关于数据丢失的问题。 如果我的数据库被锁定或者有任何方法可以解锁数据库,那么它是否有意义。

1 个答案:

答案 0 :(得分:8)

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

就数据库锁而言,当某个应用程序仍在使用它并且其他应用程序试图获取其访问权时,它会被锁定。

这可能是你的应用程序,或者可能是firefox的sqlite manager附加组件。

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

  1. 禁用sqlite附加组件中的选项,它会记住以前打开的数据库。

  2. 重新启动xcode,模拟器。

  3. 制作sqlite文件(桌面)的副本,将其从项目中删除,然后再从桌面添加项目。

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

    我希望这可以帮到你。