У меня многопоточное приложение Qt, которое имеет несколько потоков, обращающихся к одной базе данных. Мне нужно создать отдельные соединения QSqlDatabase для выполнения SELECT/INSERT/UPDATE в каждом потоке?Использование одного соединения QSqlDatabase в нескольких потоках qt
Из Qt документации, я не могу понять, если следующая директива обескураживает выше подход я предложил:.
«Соединение может использоваться только внутри потока, создавшего его Перемещение соединений между потоки или создание запросов из потока не поддерживается ».
Я практически попытался использовать одно и то же соединение в нескольких своих QThreads, и все работает нормально, но хотелось понять, правильно ли это делать.
FYI, я использую sqlite3 внутри Qt (с использованием QtSql API), который я понимаю, поддерживает сериализованный режим по умолчанию: https://www.sqlite.org/threadsafe.html
Причины я хочу использовать то же имя соединения в нескольких потоках потому что, когда я пытался использовать разные подключения к одной базе данных по нескольким потокам и выполнял SELECT/INSERT/UPDATE, я часто получал database locked
. Однако при использовании одного и того же соединения в нескольких потоках эта проблема полностью устранена.
Просьба направлять на то же самое.
С уважением,
Саурабх Ганди
Возможно, создайте класс обертки, в котором есть несколько слотов для вставки/обновления/удаления и иметь его в своем потоке – Zaiborg