Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Wolfred от Апрель 28, 2007, 11:28 Не могу понять в чем ошибка.
Использую QSqlQuery примерно следующим образом. QSqlQuery query; query.exec("select что-то там, count(*) from откуда-то group by что-то там"); //:) Так вот, при дальнейшем обращении к данным query, в поле count(*) всегда ноль. Не знает ли кто, это QSqlQuery не поддерживает функций SQL (наподобие count(*)) или я что-то неправильно делаю? Запрос осуществляется к базе данных MySQL. Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Racheengel от Апрель 28, 2007, 11:59 а база была открыта до этого вызова?
Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Wolfred от Апрель 28, 2007, 12:11 Да, конечно, база была открыта и записи были выбраны правильно, кроме поля count(*)
Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: bigirbis от Апрель 28, 2007, 12:14 Может в качестве аргумента count() стоит указать поле?
Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: alexis от Апрель 28, 2007, 12:17 а в mysql консольке проверял - работает?
а может код полностью приведем? Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Wolfred от Апрель 28, 2007, 12:25 в консоли проверял, все нормально работает!
с показом кода потруднее, я его переделал и теперь руками считаю количество записей в группе.Но во-первых - это медленнее, а во-вторых, раз это уже сделано(я имею ввиду count(*) из MySQL), то почему бы не воспользоваться:) Щас попробую, что нибудь написать и привести в виде примера, может еще не везде исправил:) Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: bigirbis от Апрель 28, 2007, 13:08 А вообще тебе это поле нужно?
Или хватит int QSqlQuery::size () const? Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: alexis от Апрель 28, 2007, 13:13 1) size вернет кол-во строк в выборке
2) count(*) агрегатная функция sql 2-й быстрее и правильнее. - 2Wolfred: напиши минимальный пример. хоть в одном файле. Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: bigirbis от Апрель 28, 2007, 13:47 Цитировать Функция Count не подсчитывает записи со значениями Null, если только аргумент выражение не содержит подстановочный знак звездочки (*). Если используются знаки звездочки, функция Count вычисляет общее количество записей, включая те, которые содержат пустые поля. Судя по тексту поставленной задачи Цитировать query.exec("select что-то там, count(*) from откуда-то group by что-то там"); 1 вариант будет правильнее, а 2 - просто избыточен (судя по всему столбец в выборке не один). Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Wolfred от Апрель 28, 2007, 14:47 Вот некий примерчик.
Код:
Так вот, count всегда ноль. Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: alexis от Апрель 28, 2007, 18:46 м-да..
а заполнителями пользоваться уже не модно? модно везде sql-инжекты оставлять? -- судя по коду - "ничего военного". выведи свой запрос: query.executedQuery() ( вроде так ) и исполни его в консоли. если все будет ок - пиши баг троллтехам. Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Tonal от Апрель 28, 2007, 19:15 Может попробывать count(*) as cnt
Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Wolfred от Апрель 28, 2007, 22:36 to Tonal
Пробовал не помогает:(. to alexis Что имеется ввиду под заполнителями? query.bindValue()? Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Tonal от Апрель 29, 2007, 08:02 Попробовал в sqlbrowser из демосов запрос с группировкой и count-ом - всё работает отлично. Попробуй свой запрос там-же.
А почему bindValue не используешь? Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Wolfred от Апрель 29, 2007, 10:04 У меня не работает и в sqlbrowser:(.
Может из-за того, что через драйвер ODBС подключаюсь? Версия QT у меня 4.2.2. Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Tonal от Апрель 29, 2007, 20:23 А почему не через родной драйвер?
Если через драйвер MySql что получается? Название: Проблемы с QSqlQuery или неправильное его использование? Отправлено: Wolfred от Апрель 29, 2007, 23:06 Не получилось у меня подсоединится к базе через драйвер MySQL, пришлось ODBC использовать.
|