未在本地计算机上注册“ Microsoft.ACE.OLEDB.12.0”提供程序

我正在尝试在按钮单击事件中从Excel文件获取数据。 我的连接字符串是:

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

当我单击按钮时,出现以下错误:

“ Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。

我不知道如何解决这个问题。 我的操作系统是Windows 7。


#1楼

当我在“配置管理器”对话框中将构建从“ x86”更改为“任何CPU”时,我在Visual Studio 2010中收到此错误/异常。 我了解此OLEDB数据库驱动程序仅适用于x86,并且不兼容64位。 将构建配置更改回x86对我来说解决了这个问题。


#2楼

这里提供了64位版本的“ Microsoft Access数据库引擎2010可再发行组件”,它使您可以使用“ Microsoft.ACE.OLEDB.12.0”提供程序:
http://www.microsoft.com/zh-cn/download/details.aspx?id=13255

如果您使用接受的答案中的下载内容,则需要按照@ backtestbroker.com的说明为x86进行构建。


#3楼

如果您使用的是64位,但是即使在安装AccessDatabaseEngine之后仍然遇到问题,请参阅这篇文章 ,它为我解决了这个问题。

即您需要安装 AccessDatabaseEngine


#4楼

如果安装的“ AccessDatabaseEngine”仍然无法解决问题,请使用以下解决方案:

您需要将Active Solution Platform从“任何CPU”更改为“ x86”。

OLEDB提供程序未在本地计算机上注册

从CodeProject.com


#5楼

对于所有仍受此影响的人。

我一直在得到错误...

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

……如OP所述,Shailesh Sahu。

我有64位Windows 7。

我的问题出在PowerShell脚本内,但使用的连接字符串类似于OP的帖子,因此希望我的发现可以应用于C#,PowerShell和依赖于“ Microsoft.ACE.OLEDB”驱动程序的任何其他语言。

我按照有关此MS论坛线程的说明进行操作: http : //goo.gl/h73RmI

我首先尝试安装64位版本,然后从此页面http://www.microsoft.com/zh-cn/download/details.aspx?id=13255安装AccessDatabaseEngine.exe的32位版本

但是仍然没有喜悦。

然后,我在PowerShell中运行以下代码(来自SQL Panda的网站http://goo.gl/A3Hu96

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

...这给了我这个结果(为简便起见,我删除了其他数据源)...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

如您所见,我有Microsoft.ACE.OLEDB。 15 .0(十五)不是Microsoft.ACE.OLEDB。 12 .0(十二)

因此,我将连接字符串修改为15并成功了。

因此,快速的PowerShell片段演示了如何对版本进行软编码...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值