错误:未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序

时间:2024-04-14 18:26:03

今天有朋友咨询学习教程里面数据库一章时,当程序运行到 conn.Open 这个位置时产生错误:
未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序。

错误:未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序


使用的的连接语句:
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;data source=D:\lessons\Northwind1.mdb;"

刚看到这个错误,我也比较奇怪,因为教程代码都是在我计算机上都是测试通过的。
首先问到的情况是,朋友计算机使用的是office access2016的版本,我的计算机上使用的是2010的版本,初步推测是因为版本问题,网上初步搜索的结果是office 2013对应为 Microsoft.ACE.OLEDB.14.0 ,office 2016对应为 Microsoft.ACE.OLEDB.16.0 。于是显示请他按照这个修改了ConnectionString语句。
但是还是错误。
这次,我仔细搜索了一下,发现不管office 2013还是office 2016,都应该使用Microsoft.ACE.OLEDB.12.0。
于是我就远程看了一下朋友的计算机。发现系统用的64位,office也是64位,将vb.net编辑器下的cpu修改为X64,就运行正确了。
其实在教程《Visual Basic.Net 循序渐进》第19章 数据库操作 第19.3.1节《连接字符串》一节有写开发32位程序和64位程序时候的连接语句不一样,但是忘了写还要与数据库引擎32位还是64位配套,如果64位的数据库引擎(office 64位)那么别忘了开发的程序也需要设置为使用64位CPU。

特此记下防止忘记。