如何同时容纳32位和64位odbc驱动程序

时间:2020-05-14 19:31:35

标签: c# ms-access odbc driver

我正在编写一个c#WPF应用程序,其中的一项设计要求是能够从Microsoft Access数据库加载数据。关于该主题,我与MS Access驱动程序有各种各样的疑问:

  1. 如果我们的应用程序被编译为64位,它将能够运行32位odbc驱动程序吗?当我以64位运行我的应用程序时,访问32位驱动程序时出现错误,我想我读到的地方是您无法从64位应用程序访问32位odbc驱动程序。

  2. 如果我们在客户端计算机上安装了64位Access驱动程序,并且它们也已经安装了32位Access驱动程序,它会乱成一团吗?默认情况下,如果已经存在32位驱动程序,Microsoft将不允许您安装64位驱动程序。有一种解决方法(在安装中使用/ passive命令),但恐怕两个驱动程序都可能会使Access混乱。

  3. 我缺少什么吗?是否有其他人曾经能够解决其应用程序正确的Odbc驱动程序的解决方法?

1 个答案:

答案 0 :(得分:0)

让我们逐点回答:

  1. 如果我们的应用程序被编译为64位,它将能够运行32位odbc驱动程序吗?

不,不会。

  1. 如果我们在客户端计算机上安装了64位Access驱动程序,并且它们也已经安装了32位Access驱动程序,那么会乱成一团吗?

是的,或者至少在这里您的里程可能有所不同。我见过人们这样做,需要完全卸载并重新安装Office才能使Access OLEDB提供程序再次运行,而其他人则完全没有问题。 32位2010数据库引擎似乎比2016数据库引擎少,但您不希望在生产应用程序中执行此操作。

  1. 有什么我想念的吗?

嗯,这里有很多选择。例如,您可以使用第三方ODBC驱动程序,该驱动程序与默认驱动程序(例如mdbtools)不冲突。您可以使用DLL代理来生成32位COM对象,并使用DAO而不是ODBC驱动程序来与数据库接口。您可以自己为64位应用程序提供32位COM对象,让其与ODBC驱动程序通信,并使用DLL代理与之交互。并且有无数的更多选择。不过,没有哪个比使用ODBC驱动程序更完美了,通常,通常只提供32位和64位版本,并让用户选择与其Office安装相匹配的版本。

相关问题