模块计算机类型x86与目标计算机类型x64冲突_C#“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决方案...

c321e7c4e85d2c86167b96be6bab0317.png

当使用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。

9aa18747a0073002aadb6f15ff702542.png

2、在Visual Studio中,打开一个“项目/解决方案”之后。

软件右上部分“解决方案资源管理器”→选中项目名称→右键“属性”→生成→目标平台→将“Any CPU”改为“x64”(只能改成x64,其他选项都不行)

70b216f1a5a08172097f41583b0bf31e.png

3、重新生成,启动程序,一切正常了。

1095f08eaf9a1f2bd6afbcac8bdbd7cf.png

注意:

在上述更改之后,在VS中“工具”→“连接到数据库”→“添加链接”页面点“测试链接”仍然会报错,不用理它,因为VS是32位的软件。毕竟用“添加链接”页面的目的是要得到“连接字符串”具体内容,编译正常是最关键的。

补充:

关于第2步

也可以通过改变解决方案的活动平台为x64平台解决(项目的目标平台会自动变为x64)

软件右上部分“解决方案资源管理器”→选中解决方案→右键“属性”→点击“配置管理器”→在“活动解决方案平台”下拉列表选择“新建”→选择新平台“x64”,其他保持默认→点击确定→重新生成解决方案即可。

a02165d67a3d34e7e9a12df34e00fc27.png

最后,给出三个微软的官方参考:

1、《Visual Studio IDE 64 位支持》:64 位支持 - Visual Studio

2、《如何:将项目配置为面向平台 》:如何:将项目配置为面向平台 - Visual Studio

3、《64 位应用程序》:64 位应用程序

C# 中的 `OleDbConnection` 是用于连接到数据库的一种组件,它通常用于访问 Microsoft Access 数据库 (.mdb 或 .accdb) 或通过 OLE DB 提供程序连接其他类型的数据库。当你遇到 "未在本地计算机注册 'Microsoft.ACE.OLEDB.12.0'" 的错误,这意味着你的系统缺少运行 ACE (Access Connectivity Engine) 的适当驱动程序,尤其是针对 Office 2013 或更高版本(如 12.0 版本)。 解决这个问题,你可以按照以下步骤操作: 1. **检查驱动安装**:确保已经安装了 Microsoft Office 或 Visual Studio Professional 及以上版本,因为它们自带这个数据库引擎。如果没有安装,需要下载并安装对应版本的 Office。 2. **手动注册提供程序**:如果已安装 Office 但仍报错,可以在命令提示符下运行以下命令(假设在默认位置): ``` regsvr32 /u %windir%\Microsoft.NET\Framework64\v4.0.30319\ado.dll regsvr32 %windir%\Microsoft.NET\Framework64\v4.0.30319\msjet40.dll regsvr32 %windir%\Microsoft.NET\Framework64\v4.0.30319\oleaut32.dll regsvr32 %windir%\Microsoft.NET\Framework\v4.0.30319\ado.dll regsvr32 %windir%\Microsoft.NET\Framework\v4.0.30319\msjet40.dll regsvr32 %windir%\Microsoft.NET\Framework\v4.0.30319\oleaut32.dll ``` 3. **更新 Visual Studio 工具箱**:如果你是在 Visual Studio 环境中,可以尝试重启 IDE,或者更新控件库来包含正确的数据提供程序。 4. **引用正确版本的命名空间**:确保你的代码中正确引用了 `System.Data.OleDb` 或 `System.Data.Oledb` 命名空间,而不是使用 `Microsoft.ACE.OLEDB`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值