2015-02-05 1 views
0

Я использую FMDatabaseQueue, чтобы иметь возможность работать с fmdb с помощью GCD. Но GCD не помогает.Приложение для блокировки FMDB при запуске выполнения запроса на обновление

Когда я пытаюсь выполнить любой запрос на выполнение выполнения несколько раз за один момент, я заморозил приложение.

Для повышения производительности я сделал - сложный запрос, чтобы уменьшить количество запросов - использовать начать и фиксации транзакции - использование setShouldCacheStatements Но НИЧЕГО помощь

Вот некоторые из примеров кода Func complexQuery (SQLQuery : String) -> Bool {

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

Я просто «замолчу мгновенно, делая много обновлений в другом потоке», зависает. Это около 4000 обновлений в 3 запросах. Результат успешный. Спасибо – Svitlana

ответ

0

Try вызов closeOpenResultSets на экземпляре FMDB только перед выполнением запроса