Библиотека Objective-C SQL Query Builder для SQLite предлагает три способа открытия соединения, как указано в ее Wiki :
// (Alternative #1)
ZIMDbConnection *connection = [[ZIMDbConnectionPool sharedInstance] connection: @"live"];
NSArray *records = [connection query: @"SELECT * FROM Customer;"];
// (Alternative #2)
ZIMDbConnection *connection = [[ZIMDbConnection alloc] initWithDataSource: @"live"];
NSArray *records = [connection query: @"SELECT * FROM Customer;"];
[connection close];
// (Alternative #3)
NSArray *records = [ZIMDbConnection dataSource: @"live" query: @"SELECT * FROM Customer;"];
Первые дваальтернативы позволяют соединению оставаться открытым.На самом деле, это и есть цель пула соединений с базой данных.С пулом соединений с базой данных вам не нужно беспокоиться об открытии и закрытии соединения, потому что класс управляет этим для вас;тогда как, во втором варианте вы управляете соединением.В третьем варианте это просто быстрый способ открыть соединение, запросить, а затем закрыть соединение в одной строке кода.
Если вы собираетесь использовать многопоточность, вам потребуетсяиспользуйте либо первый, либо второй вариант.Если вы выбрали второй вариант, создайте переменную экземпляра в своем классе и откройте соединение, а затем запустите свои потоки.После завершения работы всех потоков закройте соединение ... в противном случае просто оставьте его открытым.