在64位机器上,“Microsoft.ACE.OLEDB.12.0”提供程序未在本地注册。

4

我正在开发 Windows 应用程序。我从 Excel 读取一个值并更新到数据库中。 我的代码如下:

 string Con_Str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath +
                         ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";

我的本地环境运行正常,我使用的是32位机器。但是在64位服务器上运行exe文件时出现了错误。

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

我已从此链接下载了最新版..

http://www.microsoft.com/en-us/download/details.aspx?id=13255

我仍然遇到这个问题。如何修复它。


你需要安装ADE。尝试使用以下链接。 http://www.microsoft.com/zh-cn/download/details.aspx?id=13255 - Saroop Trivedi
在您上面的链接中,您应该会看到两个不同的下载选项。一个是32位的,另一个是64位的。 - Steve
@shai 我应该安装哪个版本的JET 4.0 SP... - RobinHood
1
@sarooptrivedi:我已经尝试过那些方法,但没有用。我仍然遇到相同的错误。 - RobinHood
1
@Shai JET4.0在64位系统中不存在。 - Steve
显示剩余2条评论
1个回答

2

您正在使用Microsoft.ACE.OLEDB.12.0;(简称ADE)。这意味着您需要在目标计算机上安装适当的位数。由于构建应用程序时选择的体系结构,这变得复杂。

您选择了AnyCPU:

Install ADE 32bit on 32bit target machine
Install ADE 64bit on 64bit target machine

您构建的是x86架构

Install ADE 32bit on 32bit or 64bit target machine.

正如您所看到的,最简单的方法是将应用程序编译为x86架构。


我的机器是32位的,我应该在我的机器上安装ADE 32位并构建应用程序,然后在服务器上安装ADE 64位。我应该这样做...平台目标:任意CPU。 - RobinHood
这是否是Jet 4.0的最新版本,链接为http://www.microsoft.com/en-us/download/details.aspx?id=8125? - RobinHood
正如我所说,您构建的是AnyCPU,在您的开发机器上(32位操作系统)安装了ADE 32位后,一切都运作良好。当您在64位机器上安装您的(AnyCPU)应用程序时,它需要64位版本的ADE,但它找不到它。因此,请在服务器上安装64位的ADE。 - Steve
您正在使用ADE而非JET,因此不需要JET4.0。并且,由于JET仅为32位,因此无法在针对AnyCPU编译的应用程序上在64位机器上使用。 - Steve
我仍然收到相同的错误信息:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。 - RobinHood
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接