Qt 5.5 QSqlDatabase :: open()总是返回true?

时间:2015-12-14 21:23:22

标签: mysql qt

以下代码适用于MySql:

#include <QCoreApplication>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlRecord>
#include <QDebug>


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("192.168.139.128");
    db.setDatabaseName("qsql");
    db.setUserName("user");
    db.setPassword("pass");

    if (!db.open()) {
        qDebug() << "Error = " << db.lastError();
    } else {
        qDebug() << "Openned!" ;
    }

    QSqlQuery query("SELECT id, name FROM persons");
    QSqlRecord record = query.record();

    while (query.next()) {
        QString id = query.value(record.indexOf("id")).toString();
        QString name =  query.value(record.indexOf("name")).toString();
        qDebug() << query.at() << ":" << id << "," << name;
    }

    return a.exec();
}

问题是db.open()总是返回true,无论连接参数有多么错误。我知道这可能是Qt 5.5(我正在使用)中的已知错误,我想知道是否有解决方法或解决方案?

1 个答案:

答案 0 :(得分:1)

是的,它是QTBUG-47784和相关的QTBUG-47452错误。两者都在Qt 5.5.1中修复。遗憾的是,如果不更改Qt的源代码或升级到5.5.1,就没有解决方案。