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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlQuery::size()  (Прочитано 8234 раз)
DiamondRain
Гость
« : Ноябрь 17, 2010, 14:56 »

Выполняю запрос SELECT. Далее в консоль вывожу size() моей выборки. Результат = -1. Тем не менее, разбирая выборку в цикле, всё отлично выводится. Насчет метода size() в справке написано следующее:

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().

Исходя из этого я не нашел ни одного условия, при котором size() должен быть равен -1. Кстати, isActive() возвращает true.
Фрагмент используемого кода:

Код:
        QSqlQuery query;
        query.exec("SELECT * FROM albums");
        qDebug() << query.size();

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 17, 2010, 15:00 »

Что за БД?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
DiamondRain
Гость
« Ответ #2 : Ноябрь 17, 2010, 15:04 »

Что за БД?

SQLite
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Ноябрь 17, 2010, 15:06 »

Она не поддерживает size.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
DiamondRain
Гость
« Ответ #4 : Ноябрь 17, 2010, 15:08 »

Она не поддерживает size.

Спасибо за разъяснение! Есть какая-нибудь замена этому методу?
Записан
crossly
Гость
« Ответ #5 : Ноябрь 17, 2010, 15:08 »

select count
Записан
Danila_Bagrofff
Гость
« Ответ #6 : Декабрь 17, 2010, 14:32 »

а у ODBC аналогично не поддерживается size?

Почему-то тоже query.size возвращает -1...

Можно поподробнее о SELECT COUNT, приведите простейший пример, пожалуйста.

Код:
int Query::singleSelect(
        QString SQLString,
        QString &string
        )
{
    if(isConnect()<0)
        return ERROR_OPEN_DB;

    lastError = "";
    string = "";
    QSqlQuery query(db); //db это db = QSqlDatabase::addDatabase(typeConnection, nameConnection); //"QODBC", "MyDB"
    bool err = query.exec(SQLString);
    if(err<0)
    {
        lastError = query.lastError().text();
        return ERROR;
    }

    if (query.size()>1)
    {
       lastError = tr("Ошибка! Множественное вхождение элемента!");
       return ERROR_COUNT;
    }
    else if(query.size()==-1)
    {
        lastError = query.lastError().text() + tr("Ошибка! Запрос не дал результатов!" );
        return ERROR_ABSENT;
    }

    while (query.next())
    {
       string = query.value(0).toString();
       //doSomething(string);
    }

    if(string=="")
        return ERROR;

    return ERROR_NO;
}
« Последнее редактирование: Декабрь 17, 2010, 14:42 от Danila_Bagrofff » Записан
crossly
Гость
« Ответ #7 : Декабрь 17, 2010, 14:34 »

потому что гладиолус...
Цитировать
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.
Записан
Danila_Bagrofff
Гость
« Ответ #8 : Декабрь 17, 2010, 14:43 »

Ясно, сам тип БД знач такой =)

А можно поподробнее о SELECT COUNT, приведите простейший пример, пожалуйста.

Записан
crossly
Гость
« Ответ #9 : Декабрь 17, 2010, 14:44 »

странно как вы вообще с БД работаете не зная азов sql
Код:
select count(*) from <table_name>
Записан
Danila_Bagrofff
Гость
« Ответ #10 : Декабрь 17, 2010, 14:54 »

Да я не очень понял, вы про запрос кол-ва строк именно в бд...
а я не вкурил, искал функционал в кутэ =)
Записан
DiamondRain
Гость
« Ответ #11 : Декабрь 19, 2010, 17:16 »

Да я не очень понял, вы про запрос кол-ва строк именно в бд...
а я не вкурил, искал функционал в кутэ =)

Кьют, кьют он называется Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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