在 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