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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Количество записей.  (Прочитано 5722 раз)
cya-st
Гость
« : Октябрь 19, 2009, 19:39 »

Всем привет.
Ламерский вопрос. Улыбающийся Подскажите пожалуйста, как можно узнать количество строк после выполнения
Код
SQL
query.exec("SELECT title FROM dir_1 WHERE pid=0;");
 
Записан
BRE
Гость
« Ответ #1 : Октябрь 19, 2009, 19:42 »

int QSqlQuery::size () const

Returns the size of the result (number of rows returned), or -1 if the size cannot be determined or if the database does not support reporting information about query sizes. Note that for non-SELECT statements (isSelect() returns false), size() will return -1. If the query is not active (isActive() returns false), -1 is returned.

To determine the number of rows affected by a non-SELECT statement, use numRowsAffected().

See also isActive(), numRowsAffected(), and QSqlDriver::hasFeature().
Записан
cya-st
Гость
« Ответ #2 : Октябрь 19, 2009, 19:47 »

Я искал всякие Count, CountRec Улыбающийся
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #3 : Октябрь 19, 2009, 20:24 »

SELECT count(*) FROM dir_1 WHERE pid=0
Записан
cya-st
Гость
« Ответ #4 : Октябрь 19, 2009, 20:28 »

SELECT count(*) FROM dir_1 WHERE pid=0
Этот вариант тоже рассматривал, но size компактнее.
Всем спасибо за ответы.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Октябрь 19, 2009, 20:35 »

в Qt почти всё и почти всегда измеряется "размерами" ("size")
Записан

Юра.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #6 : Октябрь 20, 2009, 02:48 »

Цитировать
SELECT count(*) FROM dir_1 WHERE pid=0
Этот вариант тоже рассматривал, но size компактнее.
Всем спасибо за ответы.

Конечно решать вам - но учтите несколько моментов
1) не во всех драйвераз не всех БД можно получить этот size - то есть должно быть в поддерживаемых ф-ях драйвера Qt
2) работать с большим количеством записей будет медленнее чем через запрос т.к. скорее всего (правда в исходники я не смотрел) метод size делает fetchALL(); то есть прогружает все записи запроса в память.. Если это так то разница будем тем больше чем больше записей в БД - причем запрос количества записей через (SELECT count(*) FROM dir_1 WHERE pid=0) будед выполняться почти константное время, а метод size прямо пропорциональное числу строк...
Записан
BRE
Гость
« Ответ #7 : Октябрь 20, 2009, 08:10 »

2) работать с большим количеством записей будет медленнее чем через запрос т.к. скорее всего (правда в исходники я не смотрел) метод size делает fetchALL();
Ты ошибаешься.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #8 : Октябрь 20, 2009, 11:52 »

А как он работает - строит запрос аналогичный select count() ? если да - то ошибаюсь!
Записан
BRE
Гость
« Ответ #9 : Октябрь 20, 2009, 13:23 »

А как он работает - строит запрос аналогичный select count() ? если да - то ошибаюсь!
Это зависит от драйвера/базы данных. Если БД поддерживает возвращение количества строк запроса, то size() это количество возвращается, иначе он просто возвращает -1.
Я же привел выше цитату из assistant.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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