Название: 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 Хм, да, по факту это решило мою проблему. Выполняется практически мгновенно на моем объеме данных.
Спасибо! |