Название: Количество записей. Отправлено: cya-st от Октябрь 19, 2009, 19:39 Всем привет.
Ламерский вопрос. :) Подскажите пожалуйста, как можно узнать количество строк после выполнения Код
Название: Re: Количество записей. Отправлено: BRE от Октябрь 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(). Название: Re: Количество записей. Отправлено: cya-st от Октябрь 19, 2009, 19:47 Я искал всякие Count, CountRec :)
Название: Re: Количество записей. Отправлено: break от Октябрь 19, 2009, 20:24 SELECT count(*) FROM dir_1 WHERE pid=0
Название: Re: Количество записей. Отправлено: cya-st от Октябрь 19, 2009, 20:28 SELECT count(*) FROM dir_1 WHERE pid=0 Этот вариант тоже рассматривал, но size компактнее.Всем спасибо за ответы. Название: Re: Количество записей. Отправлено: lit-uriy от Октябрь 19, 2009, 20:35 в Qt почти всё и почти всегда измеряется "размерами" ("size")
Название: Re: Количество записей. Отправлено: break от Октябрь 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 прямо пропорциональное числу строк... Название: Re: Количество записей. Отправлено: BRE от Октябрь 20, 2009, 08:10 2) работать с большим количеством записей будет медленнее чем через запрос т.к. скорее всего (правда в исходники я не смотрел) метод size делает fetchALL(); Ты ошибаешься.Название: Re: Количество записей. Отправлено: break от Октябрь 20, 2009, 11:52 А как он работает - строит запрос аналогичный select count() ? если да - то ошибаюсь!
Название: Re: Количество записей. Отправлено: BRE от Октябрь 20, 2009, 13:23 А как он работает - строит запрос аналогичный select count() ? если да - то ошибаюсь! Это зависит от драйвера/базы данных. Если БД поддерживает возвращение количества строк запроса, то size() это количество возвращается, иначе он просто возвращает -1.Я же привел выше цитату из assistant. |