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