Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ QSQLITE Драйвер и QuerySize

Автор: grio 30.11.2009, 11:59

В текущей версии QSQLITE драйвера, метод QSqlQuery::Size(); не реализован.
На запрос QSqlDriver::hasFeature(QSqlDriver::QuerySize) возвращается false.

Как еще можно быстро получить количество возвращаемых строк по SQL запросу?

Я хочу сделать Progress Bar для долгого запроса к базе, как это лучше реализавать?

Автор: panter_dsd 30.11.2009, 12:35

Используй SELECT count(*).

Автор: 512es 30.11.2009, 13:06

Цитата(panter_dsd @ 30.11.2009, 13:35) *
Используй SELECT count(*).


а я делаю вот так:
q.exec();
int qsize = 0;
while(q.next()) qsize++;
q.first();
while(q.next()) {

}


Даже и не знаю какой способ лучше)

Автор: BRE 30.11.2009, 13:09

Еще можно так попробовать:

if( m_query->last() )
    m_size = m_query->at() + 1;


Автор: Litkevich Yuriy 30.11.2009, 13:28

grio, для того, чтобы узнать сколько запрос вернёт, надо использовать запрос кол-ва из самой БД, как сказал panter_dsd,

Цитата(grio @ 30.11.2009, 14:59) *
Я хочу сделать Progress Bar для долгого запроса к базе, как это лучше реализавать?
А это ты вообще не реализуешь через Qt, т.к. весь запрос будет "думать" в БД. Когда БД будет готова отдать данные, она их будет отдавать с большой скоростью, с такой с какой в состоянии получать приложение

Автор: Kagami 30.11.2009, 14:07

Кстати, если операция долгая, попробуй использовать транзакции. Для sqlite cильно ускоряет работу, так как снижается число обращений к диску.

Автор: grio 30.11.2009, 14:11

Цитата(Litkevich Yuriy @ 30.11.2009, 13:28) *
А это ты вообще не реализуешь через Qt, т.к. весь запрос будет "думать" в БД. Когда БД будет готова отдать данные, она их будет отдавать с большой скоростью, с такой с какой в состоянии получать приложение


Я не правильно выразился, не для долгого запроса к базе, а для запросов с большим уровнем вложенности.

Цитата(521es)
while(q.next()) qsize++;


512es, ты выбрал далеко не самый быстрый способ подсчитать строки.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)