繁体   English   中英

未加载 Qt ODBC 驱动程序

[英]Qt ODBC driver not loaded

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->open() 返回false并且错误是"Driver not loaded Driver not loaded"

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

private:
    QSqlDatabase db_;

并在您的类构造函数中初始化它:

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

那应该工作!

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

这取决于您在哪里编译并打算使用与 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(如果需要): 在 linux 上安装 odbc 驱动程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM