qt连接access数据库出现 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect"解决办法

qt在链接Access数据库时遇到的问题:电脑64位,安装的32位office软件,调用access数据库出现"[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect"问题,找到ODBC数据源管理工具,方法:控制面板->管理工具->数据源(ODBC),打开如图所示

点开MS Access Database,若能点开则说明数据源没有问题,否则会提示它会提示没有安装相应驱动。这时候重新安装

链接:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255 

64位安装AccessDatabaseEngine_X64.exe,安装成功再次点开数据源无提示即成功。若不行,重新安装office(我就是把32位换成了64位)。

还有就是驱动问题,QT里给的例子中用的DRIVER={Microsoft Access Driver (*.mdb)},而系统默认的数据源配置驱动为:Microsoft Access Driver (*.mdb, *.accdb),最好的办法是先查看本机数据源中access对应的驱动,根据驱动名称写相应的数据源。

最后需要注意的是数据库路径问题,我刚开始用的"\"和"/"会出问题,最会换成"\\"才可以用

最后附上代码

QSqlDatabase db; 
db = db.addDatabase("QODBC"); 
QString path("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=E:\\test.mdb"); 
db.setDatabaseName(path); 
if (db.open()) 
{
      // success!
      qDebug() << "Success";
}
else{
      qDebug() << "Errror!";
      qDebug() << db.lastError().text();
      db.close();
}


参考链接1:https://bbs.csdn.net/topics/390689274

参考链接2:http://blog.initm.com/qodbc3-unable.shtml

猜你喜欢

转载自blog.csdn.net/kangshuaibing/article/details/84938228
今日推荐