在iOS应用程序中实现sqlite3_busy_timeout()
我有一个使用Sqlite3作为数据库的iOS应用程序。 该应用程序是multithreading。
我想确保应用程序不会从一个线程获取SQlite数据locking到另一个线程。 我认为sqlite3_busy_timeout()可能是答案。
我的问题是我在哪里把sqlite3_busy_timeout()? 我在appdelegate中打开连接到sqlite。 我应该在打开sqlite连接之后立即将sqlite3_busy_timeout()放入,或者每次执行数据调用时都需要放入sqlite3_busy_timeout()。
感谢你的帮助。
为什么不使用交易呢? 这将确保表格插入是自动完成的。
BEGIN TRANSACTION;
INSERT INTO "t1" VALUES(1, 'This is sample data', 3, NULL); INSERT INTO "t1" VALUES(2, 'More sample data', 6, NULL); INSERT INTO "t1" VALUES(3, 'And a little more', 9, NULL); COMMIT;
这是从http://www.sqlite.org/c3ref/busy_timeout.html :
如果在调用这个例程之前定义了另一个忙处理程序(使用sqlite3_busy_handler()),那么另一个忙处理程序就被清除了。
所以如果你在multithreading中执行数据调用,那么上面的“单个忙处理程序”的要求将被违反。
我会build议把它放在应用程序的代表。
希望这可以帮助。
- AVAssetExportSession给我一个输出video的右侧和底部的绿色边框
- Watchkitanimation实现:钟面,animation图表,圆形进度条
- 如何打印NSObject的所有声明属性的值?
- 尝试从应用扩展程序访问钥匙串时,获取“无钥匙串可用”错误
- 问题 – 插入文本仅适用于第一次,第二次追加到文本的末尾
- IOS7 – SLComposeViewController – 发布到Twitter时出错 – 无法发送推文 – 连接失败
- MPMusicPlayerController setCurrentPlaybackRate
- 具有向后兼容性的iOS 7状态栏半透明
- iOS,Swift 3 – 当我从Detail View返回后点击Cancel时,UISearchBar消失