Russian Qt Forum

Qt => Вопросы новичков => Тема начата: eXeLe от Апрель 17, 2015, 12:06



Название: QSqlQuery непострочно
Отправлено: eXeLe от Апрель 17, 2015, 12:06
Добрый день!

Встал вопрос по поводу работы с базой.
Обычно раньше работал всегда так:
    QString defaultQ;
    defaultQ=QString("select pole1,pole2 from my_table");
    QSqlQuery query;
    query.exec(defaultQ);
    while (query.next()) {
        MyStringList1.append(query.value(0).toString());
        MyStringList2.append(query.value(1).toString());
    }

Сейчас столкнулся с проблемой.
Запрос у меня выполняется при старте программы.
Сам запрос возвращает около 3000 строк и программа стартует только после его выполнения.
Соответственно, выполняется она в такой конструкции секунд 10-15, а то и дольше.
Можно ли как-то ответ от SQL Server'а не перебирать построчно и загонять в QStringList, а разово маппить на какой-либо массив строк?

PS: вопрос не в том, что программа долго не запускается. Можно было бы перенести выполнение запроса в другой момент, но это не избавит от долгой обработки выполнения запроса.


Название: Re: QSqlQuery непострочно
Отправлено: kibsoft от Апрель 17, 2015, 15:31
Можно попробовать поставить
Код:
void QSqlQuery::setForwardOnly(bool forward)
перед
Код:
query.exec(defaultQ);

Может быстрей будет.


Название: Re: QSqlQuery непострочно
Отправлено: eXeLe от Апрель 17, 2015, 15:41
Хм, да, по факту это решило мою проблему. Выполняется практически мгновенно на моем объеме данных.
Спасибо!