在 Win7 X64 上使用 Qt 访问 MS Access 数据库

Posted

技术标签:

【中文标题】在 Win7 X64 上使用 Qt 访问 MS Access 数据库【英文标题】:Accessing a MS Access database with Qt on Win7 X64 【发布时间】:2014-05-27 13:28:51 【问题描述】:

我曾经有一个使用以下代码连接到 MS Access 数据库(名为 JSpo2014.accbd)的 Qt 应用程序:

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver=Microsoft Access Driver (*.mdb, *.accdb);FIL=MS Access;DSN='';DBQ=C:\\2014\\bd\\JSpo2014.accdb");
db.open();

我的 Qt 应用程序是使用 Qt Creator 开发的,使用 Qt5.3.0 for MinGW x86。

它曾经在这些配置上运行良好:

安装了 Office 2010x86 的 WinXP 安装了 Office 2010x86 的 Win7x86 安装了 Office 2013x86 的 Win7x86

但它处理任何这些配置:

Win7x64 和 Office 2010x86 Win7x64 和 Office 2013x86 Win7x64 与 Office 2013x64

我收到以下错误消息:

"[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"

"QODBC3: Unable to connect"

如何让它在安装了 Office 的 Win7x64 上运行?

【问题讨论】:

您是否将数据库驱动程序 dll 放在可执行文件旁边名为 sqldrivers 的文件夹中? @Nejat :我面临的问题甚至在任何部署之前,它都在 Qt Creator 环境中。 我想知道这是不是一个简单的错字,您的 DBQ 路径中有 \\bd\\,这真的应该是“数据库”的 \\db\\ 吗? @Lucretius :感谢您的评论。这不是错字,它是“base de données”(法语数据库)的法语缩写! :-) 【参考方案1】:

您似乎需要一个 64 位驱动程序,因为您显示在 32 位环境中运行的 Windows 上一切正常,但是当您尝试在 64 位环境中运行时,您无法连接。拥有 32 位 office 并不能解决这个问题,因为 windows 仍然在 64 位环境中运行。您会假设它应该能够在 64 位环境中运行 32 位的任何东西,但情况并非总是如此,并且永远不会尝试在 32 位环境中运行 64 位。如果可能的话,我会考虑尝试获得 64 个版本。那应该可以解决您的问题。

【讨论】:

以上是关于在 Win7 X64 上使用 Qt 访问 MS Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

qt4.8.7 源码在win7+vs2010环境的x64编译(qt 64位)

QT 5.1.1:QWebview 中的复选框在 Win 7 (x64) / Win 8 下显示奇怪的行为

在Win7 64位旗舰版下,利用Vs2008编译64位的Qt 4.8.2

ms17010漏洞的简单利用

QT 5.6.1 应用程序在退出插槽后仅在 x86 架构而不是 x64 上崩溃

在Win x64上使用Tcl和tdbc而不是MS SQL