Russian Qt Forum
Апрель 26, 2024, 04:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlQuery непострочно  (Прочитано 1980 раз)
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: вопрос не в том, что программа долго не запускается. Можно было бы перенести выполнение запроса в другой момент, но это не избавит от долгой обработки выполнения запроса.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Апрель 17, 2015, 15:31 »

Можно попробовать поставить
Код:
void QSqlQuery::setForwardOnly(bool forward)
перед
Код:
query.exec(defaultQ);

Может быстрей будет.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
eXeLe
Гость
« Ответ #2 : Апрель 17, 2015, 15:41 »

Хм, да, по факту это решило мою проблему. Выполняется практически мгновенно на моем объеме данных.
Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.