C#“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决方案
当使用C#语言连接Access数据库时,即使安装有64位版本的Office,也会出现“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。”这个问题。从Office2016开始,困扰了我好多年。
以往的解决之道(也是网上给出的方法)是:1、彻底卸载并安装32位的Office 2、更改注册表、数据库等相关设置。
但这种方式存在问题:1、局限性大 2、后患无穷。只要你换台电脑,你就得重新把环境配置一遍,费时费力。
经过自己的摸索,找到一种自认为比较简便的解决方式。
先说一下办公环境
操作系统:Win10 Professional x64 Edition
IDE平台:Visual Studio 2019 16.4.6
Access版本:Access 2019 x64 Edition
编程语言与项目类型:C#、WPF应用(.Net Framework 4.8)
解决方法:(就两步,都很关键)
1、安装“Microsoft Access 2010 数据库引擎可再发行程序包 ”
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
你是64位的Office,你就安装AccessDatabaseEngine_X64.exe。
你是32位的Office,你就安装AccessDatabaseEngine.exe。
只能二选一,装了一个之后另一个就装不上。
我是64位Office,那必然是安装AccessDatabaseEngine_X64.exe。
2、在Visual Studio中,打开一个“项目/解决方案”之后。
软件右上部分“解决方案资源管理器”→选中项目名称→右键“属性”→生成→目标平台→将“Any CPU”改为“x64”(只能改成x64,其他选项都不行)
3、重新生成,启动程序,一切正常了。
注意:
在上述更改之后,在VS中“工具”→“连接到数据库”→“添加链接”页面点“测试链接”仍然会报错,不用理它,因为VS是32位的软件。毕竟用“添加链接”页面的目的是要得到“连接字符串”具体内容,编译正常是最关键的。
补充:
关于第2步
也可以通过改变解决方案的活动平台为x64平台解决(项目的目标平台会自动变为x64)
软件右上部分“解决方案资源管理器”→选中解决方案→右键“属性”→点击“配置管理器”→在“活动解决方案平台”下拉列表选择“新建”→选择新平台“x64”,其他保持默认→点击确定→重新生成解决方案即可。
最后,给出三个微软的官方参考:
1、《Visual Studio IDE 64 位支持》:64 位支持 - Visual Studio
2、《如何:将项目配置为面向平台 》:如何:将项目配置为面向平台 - Visual Studio
3、《64 位应用程序》:64 位应用程序