Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QSQLITE Драйвер и QuerySize
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
grio
В текущей версии QSQLITE драйвера, метод QSqlQuery::Size(); не реализован.
На запрос QSqlDriver::hasFeature(QSqlDriver::QuerySize) возвращается false.

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

Я хочу сделать Progress Bar для долгого запроса к базе, как это лучше реализавать?
panter_dsd
Используй SELECT count(*).
512es
Цитата(panter_dsd @ 30.11.2009, 13:35) *
Используй SELECT count(*).


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

}


Даже и не знаю какой способ лучше)
BRE
Еще можно так попробовать:
if( m_query->last() )
    m_size = m_query->at() + 1;

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


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

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


512es, ты выбрал далеко не самый быстрый способ подсчитать строки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.