Qt ODBC驱动程序未加载

时间:2012-01-06 13:25:46

标签: c++ qt odbc

我在QODBC驱动程序中遇到以下问题:

bool Dialog::createOdbcConnection(QSqlDatabase * db, QString odbcName,QString user,QString pass)
{
    db = new QSqlDatabase();
    db->addDatabase("QODBC");
    db->setDatabaseName(odbcName);
    if(!user.isEmpty())
        db->setUserName(user);
    if(!pass.isEmpty())
        db->setPassword(pass);

    qDebug() << QSqlDatabase :: drivers();

    if (!db->open())
    {
            QMessageBox mgs;
            qDebug() << db->lastError().text();
            mgs.setText(db->lastError().text());
            mgs.exec();
            return false;
    }

    return true;
}

qDebug() << QSqlDatabase :: drivers();返回("QSQLITE", "QODBC3", "QODBC"),但程序无法打开我的数据库,db-&gt; open()返回 false ,错误为"Driver not loaded Driver not loaded"

2 个答案:

答案 0 :(得分:1)

在createOdbcConnection-Method中使用QSqlDatabase参数是什么意思? 我宁愿从那里删除它,在类定义中定义一个QSqlDatabase对象:

private:
    QSqlDatabase db_;

并在Class-Constructor中初始化它:

db_ = QSqlDatabase::addDatabase("QODBC");

这应该有用!

答案 1 :(得分:0)

我看到此问题已解决,但我正在添加注释,以防有人遇到与我相同的问题并在未加载驱动程序时寻找解决方案,但所描述的解决方案还不够。< /p>

这取决于您在哪里编译并打算使用与 ODBC 相关的 Qt 代码。我遇到了类似的问题。

我的代码在 Windows 上运行良好,但在其他地方 (Linux) 编译时返回错误。

在 Linux 上运行编译后的代码时会遇到麻烦,因为驱动程序 libsqlodbc.so 即使存在于 /plugins/sqldriver 目录中,它也依赖于某些必须独立安装的特定库。

>

您可以通过

查看缺少哪个库
ldd ./path-to-libsqlodbc.so/libsqlodbc.so

您可以查看是否缺少任何其他库以使您的二进制文件运行

ldd ./path-to-your-binary-file/name-of-your-binary-file

使用以下信息在您的 Linux 上安装 ODBC(如果需要): installing odbc driver on linux