Russian Qt Forum

Qt => Базы данных => Тема начата: bvn13 от Август 06, 2011, 13:36



Название: Последовательные запросы SQL vs Подключение к БД
Отправлено: bvn13 от Август 06, 2011, 13:36
Уважаемые форумчане. Столкнулся с такой проблемой.

Делаю новое соединение с MySQL: QDatabese без идентификатора соединения.
Выполняю запрос, начинаю цикл по результатам запроса. Но мне нужно в каждой итерации цикла выполнять другой запрос SQL, я делаю его через новое подключение к БД без идентификатора соединения. Все бы хорошо, но... после первого "вложенного" запроса сбивается результат (QSqlQuery) внешнего запроса. Думается, что нужно использовать новое соединение с БД с каким-нибудь идентификатором, но это только предположение.

Подскажите мне, как правильней обойти эту ситуацию?


Название: Re: Последовательные запросы SQL vs Подключение к БД
Отправлено: Странник от Август 06, 2011, 13:51
при выполнении нового подключения по умолчанию (без идентификатора) старое подключение закрывается, ресурсы освобождаются и QSqlQuery инактивируются. так ли нужно устанавливать новое подключение для новых запросов? можете выполнять "вложенные" запросы из другого объекта QSqlQuery. или следить за тем, чтобы все открываемые одновременно подключения имели разные идентификаторы.


Название: Re: Последовательные запросы SQL vs Подключение к БД
Отправлено: asvil от Август 06, 2011, 14:19
Цитировать
Но мне нужно в каждой итерации цикла выполнять другой запрос SQL,
Реализуется подзапросом, но никак не циклами в си коде.


Название: Re: Последовательные запросы SQL vs Подключение к БД
Отправлено: LisandreL от Август 06, 2011, 14:33
Да можно делать QSqlDatabase с именем отличным от дефолнтоного, чтобы не удалялись предыдущие.
Но совершенно не очевидно, зачем для каждого запроса создавать новое подключение. Почему бы не создавать QSqlQuery для одного и того же подключения?


Название: Re: Последовательные запросы SQL vs Подключение к БД
Отправлено: bvn13 от Август 06, 2011, 15:05
Сейчас попробую переделать все на одно подключение.
Я делал каждый раз разное - свое в каждом объекте класса. Сейчас буду передавать текущее.
Спасибо за оперативные ответы.

ЗЫ. А как работать с подзапросами?