2015-02-05 39 views
0

我正在使用FMDatabaseQueue来使用GCD使用fmdb的功能。 但GCD没有帮助。FMDB在运行时冻结应用程序执行更新查询

当我尝试执行任何执行更新查询几次在一瞬间我冻结了应用程序。

为了提高我做 性能 - 复杂的查询,减少查询 的数量 - 使用begin和commit transaction - 使用setShouldCacheStatements 但没有什么帮助

这里是代码 FUNC complexQuery的一些示例(的SQLQuery :字符串) - >布尔{

var result = false 
self.databaseQueue.inDatabase() { database in 

    database.setShouldCacheStatements(true) 
    database.beginTransaction() 
    result = database.executeStatements(sqlQuery) 
    database.commit() 
} 
+0

也许你应该关闭并打开你的FMDatabase。请检查此http://stackoverflow.com/a/18216818/1866077 – arthankamal

+0

请澄清“我冻结了应用程序”。应用程序是否完全死锁?或者只是在另一个线程上进行多次更新时暂时停顿。究竟我们在这里谈论多久?另外,你在'sqlQuery'中做了多少次更新?结果是否表示成功完成? – Rob

+0

我有“只是暂时停顿,而在另一个线程上进行多次更新”会冻结。 3次查询中约有4000次更新。结果是成功的。 谢谢 – Svitlana

回答

0

尝试呼叫的FMDB实例closeOpenResultSets只是执行查询

前0
相关问题