简体   繁体   English

Objective-C SQLite - SQLITE_BUSY

[英]Objective-C SQLite - SQLITE_BUSY

I have a database layer, when I have it on AppDelegate, it works perfectly.我有一个数据库层,当我将它放在 AppDelegate 上时,它可以完美运行。

When I take that layer in my ViewController, it returns the error SQLITE_BUSY, my database is locked.当我在 ViewController 中获取该层时,它返回错误 SQLITE_BUSY,我的数据库已锁定。

I run sqlite_exec with args "BEGIN EXCLUSIVE TRANSACTION" and after sqlite_step(STATEMENT) I run sqlite_exec with args "COMMIT TRANSACTION"我使用 args "BEGIN EXCLUSIVE TRANSACTION" 运行 sqlite_exec,在 sqlite_step(STATEMENT) 之后我使用 args "COMMIT TRANSACTION" 运行 sqlite_exec

Thanks in advance for any help.提前感谢您的帮助。

  • I searched for a problem similar to mine but none of the solutions solved my problem.我搜索了一个与我类似的问题,但没有一个解决方案解决了我的问题。

I'm managing existing code, so I cant switch.我正在管理现有代码,所以我无法切换。 But If you wana switch and still work in sql fmdb ( https://github.com/ccgus/fmdb ) is a good alternate.但是,如果您想切换并仍然在 sql fmdb ( https://github.com/ccgus/fmdb ) 中工作,这是一个不错的选择。

I've fixed my problem by adding following lines after using db.我已经通过在使用 db.xml 后添加以下行来解决我的问题。 You should never forget to close the connection.你永远不应该忘记关闭连接。

          sqlite3_finalize(statement);
          sqlite3_close(contactDB);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM