Russian Qt Forum

Qt => Базы данных => Тема начата: admsasha от Декабрь 26, 2013, 03:30



Название: Проблема с mySQL в Qt5
Отправлено: admsasha от Декабрь 26, 2013, 03:30
Пытаюсь свой старый код портировать с Qt4 на Qt5. Возникла проблема на sql запросе.

Вот тестовый пример:
Код:
    QSqlDatabase db =  QSqlDatabase::addDatabase("QMYSQL","test");
    db.setDatabaseName("test");
    db.setHostName("127.0.0.1");
    db.setUserName("myuser");
    db.setPassword("mypassword");
    if( !db.open()){
        QMessageBox::critical(0, QObject::tr("SQL Error"), db.lastError().text());
        qDebug() << db.lastError();
        return 1;
    }
    QSqlQuery query(QSqlDatabase::database("test"));

    query.prepare("SELECT id from mytable");
    if(!query.exec()){
        qDebug() << query.lastError().text();
    }else{
        qDebug() << query.size();
        while (query.next()){
            qDebug() << query.value(0).toString();
        }
        query.clear();
    }

Ошибок нигде не показывает. Size выводит 9, но результата не выводит и вообще в цикле не разу не бывает. Что делаю не так ?

Os: windows XP
Qt: mingw/Qt 5.2



Название: Re: Проблема с mySQL в Qt5
Отправлено: carrygun от Декабрь 26, 2013, 04:51
Попробуйте перед циклом написать следующее:
Код
C++ (Qt)
query.first();
qDebug() << query.value(0);
 
И у вас действительно 9 записей в той таблице?


Название: Re: Проблема с mySQL в Qt5
Отправлено: admsasha от Декабрь 26, 2013, 06:11
Попробуйте перед циклом написать следующее:
Код
C++ (Qt)
query.first();
qDebug() << query.value(0);
 
И у вас действительно 9 записей в той таблице?
Пробовал. Эффекту не дало. query.value(0), написал, что не отсутствует запись.
Да, их реально 9 записей, сразу же проверил.


Название: Re: Проблема с mySQL в Qt5
Отправлено: admsasha от Декабрь 26, 2013, 06:15
Обновил mysql server до 5.1 (была 5.0, 5.7 под XP не работает) для получения обновленной libmysql.dll и всё заработало.