2011-04-12 73 views
3

我有一个Win32应用程序可以建立ODBC连接。我们使用SQLDriverConnect() 连接,它显示一个对话框来选择数据源。在x64版本中,对话框显示并提供了2个不同的32位MS ACCESS驱动程序。当我选择其中之一时,在32位版本中,我会看到一个打开文件对话框来选择.mdb文件。在64位版本中,此时对SQLDriverConnect()的调用返回-1。我可以在我的64位应用程序中使用32位ODBC驱动程序

SQLError()回报:“[微软] [ODBC驱动程序管理器]数据源名称找不到和未指定默认驱动程序”

是它一般可以使用32位ODBC驱动程序从64位可执行文件?为什么显示这些驱动程序?据我所知,目前还没有64位MS Access OBDC驱动程序。我能做什么?

回答

4

你绝对不能混用32位应用程序和64位驱动程序(反之亦然)。

基本上,ODBC驱动程序通常是由其父应用程序加载的dll(windows)或共享对象(linux ...)。

所有可执行文件,DLL等共享相同的进程空间必须是同一bit'ness ...

+0

感谢您的明确答案。我坚信如果ODBC使用COM或不同的接口。但是,当我从64位应用程序调用这些驱动程序时,为什么这些驱动程序由ODBC驱动程序管理器列出? – 2011-04-12 13:14:32

+0

@REDSOFTADAIR它与注册表项有关。微软的描述在这里:http://support.microsoft。com/kb/942976 – jvangeld 2012-03-26 22:36:28

0

好了,我不知道为什么SQLDriverConnect()工作你描述的方式,但是从微软

也许这篇博客

http://blogs.msdn.com/b/psssql/archive/2010/01/21/how-to-get-a-x64-version-of-jet.aspx

可以帮你一点点。

似乎不久将会有MS Access的本地64位ODBC驱动程序,但那里提到的那些ACE组件可能是另一种选择。

+0

64位Office或MS Access 2010安装程序确实包含一个64位MS Access ODBC驱动程序,尽管它似乎不是64位Windows操作系统附带的64位MDAC的一部分,但我想可能会在以后的更新中更改。仅在上周我安装了64位MS Access,这使我能够将MS Access表连接到Windows上的64位[Virtuoso Server](http://virtuoso.openlinksw.com)。 – hwilliams 2011-04-12 23:57:51

+0

@hwilliams:感谢那些有趣的信息,似乎我发现的博客文章有些过时。 – 2011-04-13 06:27:48

2

以“桥”从64位应用程序,你需要使用一个32位的ODBC驱动程序一个ODBC到ODBC桥如 -

http://uda.openlinksw.com/odbc-odbc-mt/

这具有可见插座连接到32位的服务器组件64位ODBC客户端组件。服务器组件桥接到预配置的32位Access ODBC DSN。

客户端组件可以是本地计算机或服务器计算机上...

-1

你不能,但你有替代编译32位你的应用程序,并使用32位ODBC驱动程序。在我的情况下,我使用GoLang只是改变GOARCH环境变量SET GOARCH = 386然后编译你的项目去建立和你所有的设置。

+0

没有问题的答案:“我可以为我的64位应用程序使用32位ODBC驱动程序”。 – 2018-02-21 12:06:48

相关问题