Russian Qt Forum

Qt => Базы данных => Тема начата: jaroslav от Июнь 18, 2013, 15:01



Название: QSQLQuery метод first()
Отправлено: jaroslav от Июнь 18, 2013, 15:01
Не могу понять, почему метод first() не позиционирует курсор на первую запись.
Например:
Код:
while (stored.next()){
 ....
}

srored.first();

while (stored.next()){
 ....
}

Второй цикл уже не будет работать. next() сразу же вернет false;


Название: Re: QSQLQuery метод first()
Отправлено: mutineer от Июнь 18, 2013, 15:04
Может проблема в опечатке?
srored.first();


Название: Re: QSQLQuery метод first()
Отправлено: Hellraiser от Июнь 18, 2013, 15:12
Если не опечатка, то надо проверить возврат от функции isForwardOnly(). Если тру, то движение обратно невозможно.


Название: Re: QSQLQuery метод first()
Отправлено: jaroslav от Июнь 18, 2013, 16:06
Это здесь опечатка, в коде все окей.  :)
isForwardOnly возвращает true, хотя устанавливаю для stored setForwardOnly(false);

Какие варианты решение можете порекомендовать?


Название: Re: QSQLQuery метод first()
Отправлено: Hellraiser от Июнь 18, 2013, 16:30
setForwardOnly(false) надо звать до выполнения запроса, false по умолчанию уже задано. Также, направленность курсора в запросе сильно зависит от драйвера и СУБД. Ассистент как-бы на это намекает:
Цитировать
Setting forward only to false is a suggestion to the database engine, which has the final say on whether a result set is forward only or scrollable.
. Возможно даже придется переисполнить запрос.


Название: Re: QSQLQuery метод first()
Отправлено: jaroslav от Июнь 18, 2013, 16:32
setForwardOnly(false) устанавливается до выполнения запроса.


Название: Re: QSQLQuery метод first()
Отправлено: lit-uriy от Июнь 18, 2013, 18:15
>>isForwardOnly возвращает true, хотя устанавливаю для stored setForwardOnly(false);
значит нет других вариантов, значит возможно только движение вперёд


Название: Re: QSQLQuery метод first()
Отправлено: jaroslav от Июнь 19, 2013, 12:40
Такая штука получается, если в ХП добавить SET ROWCOUNT Х, то first() начинает фурычить, иначе только forward only.


Название: Re: QSQLQuery метод first()
Отправлено: jaroslav от Июнь 19, 2013, 12:49
Решено. Всем спасибо за ответы.