我可以为我的64位应用程序使用32位ODBC驱动程序

时间:2011-04-12 10:52:49

标签: winapi odbc 32bit-64bit

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

SQLError()返回:“[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序”

通常可以使用64位可执行文件中的32位ODBC驱动程序吗?为什么显示这些驱动程序?据我所知,到目前为止还没有64位MS Access OBDC驱动程序。我该怎么办?

4 个答案:

答案 0 :(得分:4)

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

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

共享相同进程空间的所有可执行文件,dll等必须具有相同的位...

答案 1 :(得分:2)

为了从64位应用程序“桥接”到32位ODBC驱动程序,您需要使用ODBC到ODBC桥,例如 -

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

这有一个64位ODBC客户端组件,它将vis套接字连接到32位服务器组件。服务器组件桥接到预配置的32位Access ODBC DSN。

客户端组件可以在本地计算机上,也可以在服务器计算机上...

答案 2 :(得分: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组件可能是另一种选择。

答案 3 :(得分:-1)

您不能,但您可以选择以32位编译您的应用程序,并使用32位odbc驱动程序。在我的情况下,我使用GoLang只需更改GOARCH环境变量 SET GOARCH = 386 然后编译你的项目 go build 和你的所有设置。

相关问题