[英]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.