2016-12-01 54 views
1

我的电脑同时安装了带有Access 2016的64位Office和安装了32位Access 2010的可再发行组件。提供者Microsoft.ACE.OLEDB.12.0未在64位模式下运行,但是Access 64bit在那里

我的VB.NET程序使用OleDb类来读写存储在.accdb文件中的数据。

如果我使用AnyCPU选项对其进行编译,它将暂停并显示“Microsoft.ACE.OLEDB.12.0提供程序未注册”的异常,除非我设置了“prefer 32 bit”选项。

但后来我的整个应用程序将不会从64位处理中获益,这将运行32位(IntPtr.Size = 4

这是为什么? .NET OleDb类不应该找到Access 2016 64位附带的64位提供程序?

我会感谢任何人帮助我理解这里发生的事情,希望能指导我解决这个问题。

回答

2

你可能安装的点击运行版本的Office 2016 According to Microsoft的:在本地操作系统上的隔离虚拟环境中运行Office的

点击即用安装。 [...]您必须从以下某个来源安装Microsoft Access数据库引擎的MSI安装,以便调用应用程序可以找到[Microsoft.ACE.OLEDB.12.0 OLEDB提供程序]。

所以,你有以下几种选择:

  • 摆脱了32位访问运行时的安装,例如,the 64-bit version of the Access 2013 Runtime代替或

  • 坚持到32位。有没有支持的方式来安装Microsoft.ACE.OLEDB.12.0驱动程序在 32位和64位版本在同一台机器上。 (是的,这很愚蠢)。或者,

  • 您可能想切换到另一个数据库(如SQL Sever Express或SQLite)。将Office产品和64位结合起来往往会导致很多麻烦。

+0

谢谢你@Heinzi,你钉了它。我的Office版本是点击运行的版本,我不知道这个问题。现在,我会尝试你的第一个建议。不过,我会考虑在将来换用SQLite。非常感谢你! – VBobCat

+0

@VBobCat:如果您不需要Access Runtime,您也可以[只下载驱动程序本身](https://www.microsoft.com/en-us/download/details.aspx?id=13255)。 – Heinzi

+2

反馈:摆脱32位访问运行时并安装64位版本的Access 2013运行时可以正常工作。再次感谢,@ Heinzi! – VBobCat

相关问题