Russian Qt Forum

Qt => Базы данных => Тема начата: CMorgan от Октябрь 01, 2013, 14:10



Название: [Решено]Тормоза ODBC + данные с удаленного сервера
Отправлено: CMorgan от Октябрь 01, 2013, 14:10
Добрый день.
Есть удаленный сервак: MS SQL Server 2008
Мой клиент на QT 4.7.4, подключение к БД через ODBC

В процессе работы есть задача заполнить комбик значениями из справочника ( всего порядка 1200 значений) заполнение идет так:
Код:
void ComboQuery::setQuery( const QString &query )
{
    _combo->clear();
    _queryStr = query;
_maxLenght = 0;

    _combo->setStyleSheet( "background: yellow" );

    for( int i = 0; i < _emptyRows; ++i)
        _combo->addItem( "" );
    
if( _query.exec( _queryStr ) )
        while( _query.next() )
        {
            QString txt = _query.value( _showCol ).toString().trimmed();
            QFontMetrics fMetrics = _combo->fontMetrics();
            int width = fMetrics.width( txt );
            if( _maxLenght <  width )
                _maxLenght = width;
            _combo->addItem( txt );
        }
    else
        QMessageBox::critical( 0, tr( "Ошибка запроса к базе" ), tr( "Не удалось заполнить комбик" ) );
}

Трабла в том что на каждый _query.next() оно долбится за данными на удаленный сервак, что в результате выливается в 3х минутное ожидание заполнения комбика. Как бы заставить его получить результат select-а сразу целиком и раздербанить его уже на клиенте? ( Этот же запрос из под менеджмент студии выполняется за 1сек )


Название: Re: Тормоза ODBC + данные с удаленного сервера
Отправлено: VPS от Октябрь 01, 2013, 15:24
Попробуйте вот это (http://www.cameronjtinker.com/post/2012/07/04/Improving-speed-of-retrieving-a-result-set-from-a-QSqlQuery.aspx).


Название: Re: [Решено]Тормоза ODBC + данные с удаленного сервера
Отправлено: CMorgan от Октябрь 02, 2013, 17:03
Спасибо. Именно то, что нужно.