Qt 6.7连接.mdb文件报错IM002 QODBC: Unable to connect求助
Qt读取.mdb文件遇到IM002 QODBC连接错误的解决办法
使用Qt读取.mdb文件时,触发IM002 QODBC: Unable to connect错误。已按常规步骤检查位数匹配、驱动名称,问题仍未解决。
排查过程
- 确认目标文件存在、QODBC驱动有效,验证结果均为true
- 针对64位Qt 6.7开发套件,使用64位MS Access创建测试.mdb文件,依旧报错
- 测试读取不存在的文件、替换路径分隔符,均触发相同的IM002错误
解决方案
经定位,该问题是Qt 6.7版本的自身bug,相同代码在Qt 6.6.3中可正常运行。建议遇到同类问题的用户优先降级Qt版本至6.6.3或更早的稳定版本。
代码片段
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); QString path = "F:\\SKJ Trial\\test data\\Dummy_64bit.mdb"; QString str_comm = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ="; qDebug() << "Is Db valid: " + QVariant(db.isValid()).toString(); qDebug() << "path: " + path; qDebug() << "Is file exist: " + QVariant(QFile(path).exists()).toString(); str_comm += path; db.setDatabaseName(str_comm); qDebug() << "String command: " + str_comm; db.open(); if(db.isOpen()){ qDebug() << "Success"; } else { qDebug() << "Failed"; qDebug() << db.lastError().text(); }
控制台日志示例
"Is Db valid: true" "path: F:\\SKJ Trial\\test data\\Dummy_64bit.mdb" "Is file exist: true" "String command: DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=F:\\SKJ Trial\\test data\\Dummy_64bit.mdb" Failed "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, IM002 QODBC: Unable to connect"
内容的提问来源于stack exchange,提问作者Gunawan Wicaksono
相关产品推荐
相关产品推荐

