走过路过,请教Qt 通过ODBC在连接access时,未发现数据源名称并且未指定默认驱动程序

骐轩浪痕 2014-01-08 08:04:41
最近新学Qt,碰到一个很棘手的问题,搜索了一两天也没有解决,听说csdn大神比较多,特来找大神赐教,感谢大家。废话不扯了,问题如下。

Debug 信息:
Access Connect Fail!
"[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect"

代码:

void database::connect(){
QSqlDatabase dbtest = QSqlDatabase::addDatabase("QODBC");
dbtest.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=d:/dbtest.mdb");
bool ok = dbtest.open();
if(ok){
qDebug() << "Access Connect OK!";
qDebug() << dbtest.lastError().text();
}else{
qDebug() << "Access Connect Fail!";
qDebug() << dbtest.lastError().text();
}

}



已经在ODBC中配置了数据源。过程为:
控制面板->管理工具->数据源(ODBC)->系统DSN 中添加数据源。

数据库文件为dbtest.mdb,路径为:D:\dbtest.mdb

环境为:vs2012 + Qt5.20

调试的结果为:
Access Connect Fail!
"[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect"

有没有朋友有过类似经验,我试了很多办法和网上的方案,也没有成功。
...全文
6749 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fezl 2016-03-25
  • 打赏
  • 举报
回复
引用 5 楼 qq_22038209 的回复:
那我的是win8.1系统 用的2013的access 怎么破?
也是一样的用法,我用的win10也没问题
说白了不够黑 2015-12-28
  • 打赏
  • 举报
回复
那我的是win8.1系统 用的2013的access 怎么破?
踢飞季节 2015-12-16
  • 打赏
  • 举报
回复
碰到了相同的问题,把我写的程序装到了用户电脑上出现了这个问题,也是(*.mdb)与(*.mdb ,*.accdb)管理工具 QODBC数据源里,2003是(*.mdb)2010是(*.mdb ,*.accdb),感谢撸主。
bluespacezero 2015-05-01
  • 打赏
  • 举报
回复
正解!快楼主感动哭了!!
骐轩浪痕 2014-01-08
  • 打赏
  • 举报
回复 3
亲爱的朋友们,我终于找到了答案,尽管没有人看到这个帖子,现在分享一下,这纠结的一天! 之所以回报如下异常,是因为在Qt中setDatabaseName(dns),如果dns字符串不正确的话就会报那种异常。 异常为: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect dns错误的原因为目前我的电脑为win7 64位, 系统默认的数据源配置驱动为:Microsoft Access Driver (*.mdb, *.accdb) (注意:空格一定不能少) 而在网上搜到的各种Qt连接access的例子中 驱动为:Microsoft Access Driver (*.mdb) 解决办法: 查看本机数据源中access对应的驱动,在 dns 字符串中将 DRIVER 的值替换相应驱动就行了。

551

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧