[英]How to accommodate both 32 bit and 64 bit odbc drivers
我正在编写一个 c# WPF 应用程序,其中设计要求之一是能够从 Microsoft Access 数据库加载数据。 我对此主题有很多与 MS Access 驱动程序相关的问题:
如果我们的应用程序编译为 64 位,它是否能够运行 32 位 odbc 驱动程序? 当我以 64 位运行我的应用程序时,访问 32 位驱动程序时出现错误,我想我在某处读到您无法从 64 位应用程序访问 32 位 odbc 驱动程序。
如果我们在客户端机器上安装 64 位 Access 驱动程序,并且他们也已经安装了 32 位 Access 驱动程序,会不会搞砸? 默认情况下,如果 32 位驱动程序已经存在,Microsoft 不会让您安装 64 位驱动程序。 有一种解决方法(在安装时使用 /passive 命令),但我担心同时拥有两个驱动程序可能会使 Access 出现问题。
有什么我想念的吗? 是否有其他人曾经能够为其应用程序访问正确的 Odbc 驱动程序的解决方法?
让我们逐点回答这个问题:
不,不会。
是的,或者至少,您的里程在这里可能会有所不同。 我见过有人这样做,需要完全卸载 Office 并重新安装才能让 Access OLEDB 提供程序再次工作,而其他人则完全没有问题。 32 位 2010 数据库引擎的问题似乎比 2016 少,但不是您想在生产应用程序中做的事情。
好吧,这里有很多选择。 例如,您可以使用与默认驱动程序不冲突的第三方 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.