c# - 'Microsoft.ACE.OLEDB.12.0' 提供者未在 64 位机的本地机器上注册

标签 c# windows

我在 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

我仍然遇到问题。如何解决这个问题..

最佳答案

您正在使用 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 架构编译您的应用程序。

关于c# - 'Microsoft.ACE.OLEDB.12.0' 提供者未在 64 位机的本地机器上注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11078675/

相关文章:

c# - List.Add() 问题仅保存最后添加的项目

c# - Chrome/FF 中 JS 脚本的问题

c++ - 原始 ICMP 套接字 : recvfrom() not recieving any data

c++ - 什么是 : MultiByteToWideChar & WideCharToMultiByte? 的 Linux 等价物

c++ - 使用比较运算符比较 time_t 值

COM 引用计数

c# - 数据 GridView C# 背后的正确逻辑

c# - 参数字段中的 C# 中的 "this"保留字有什么作用?

c# - WCF - 来自另一个程序集的服务契约(Contract)

c++ - 打开 .doc 文件而不提供其处理程序应用程序 C++ 的路径