繁体   English   中英

如何同时适应 32 位和 64 位 odbc 驱动程序

[英]How to accommodate both 32 bit and 64 bit odbc drivers

我正在编写一个 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. 如果我们的应用程序编译为 64 位,它是否能够运行 32 位 odbc 驱动程序?

不,不会。

  1. 如果我们在客户端机器上安装 64 位 Access 驱动程序,并且他们也已经安装了 32 位 Access 驱动程序,会不会搞砸?

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

  1. 有什么我想念的吗?

好吧,这里有很多选择。 例如,您可以使用与默认驱动程序不冲突的第三方 ODBC 驱动程序,例如 mdbtools。 You could use the DLL surrogate to spawn a 32-bits COM object and use DAO instead of the ODBC driver to interface with the database. You could provide a 32-bit COM object with the 64-bit application yourself, let that communicate with the ODBC driver, and interface with that using the DLL surrogate. 还有无数更多的选择。 不过,没有一个比使用 ODBC 驱动程序更完美,通常只提供 32 位和 64 位版本并让用户选择与其 Office 安装匹配的版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM