簡體   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