VB.NET连接Access 2010提示Provider cannot be found错误求助
错误产生原因
- 架构不匹配:VB.NET 2008项目默认编译目标与你本地安装的Access数据库驱动架构不一致,比如项目编译为64位但驱动是32位,或反过来;你本地能正常运行的项目,编译架构和驱动架构是匹配的,所以不会报错。
- 驱动版本号不匹配:你使用的
Microsoft.ACE.OLEDB.15.0是Office 2013对应的驱动版本,你本地安装的是Access 2010,对应的ACE驱动版本号为12.0,版本号错误会导致系统找不到对应Provider。 - Jet驱动兼容性限制:
Microsoft.Jet.OLEDB.4.0是32位专属驱动,完全不支持64位程序运行,如果你的项目编译目标为64位,调用Jet驱动必然会触发报错。
解决方法
- 首先修正连接字符串的驱动版本号,Access 2010对应正确的ACE驱动标识为
Microsoft.ACE.OLEDB.12.0,修改后连接字符串为:con.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Softwares\SalesPurchase.mdb") - 统一项目编译架构和驱动架构:
打开VB.NET 2008项目,依次点击「项目」→「项目属性」→「编译」选项卡→「高级编译选项」,将「目标CPU」修改为和驱动一致的架构:32位驱动选x86,64位驱动选x64,不要使用Any CPU选项。 - 不确定驱动架构的情况下,可以新建后缀为
.udl的空白文件,双击打开后在「提供程序」列表里查看可用的Access驱动,确认存在对应版本的ACE驱动后,直接复制生成的连接字符串到代码中即可。
内容的提问来源于stack exchange,提问作者Oscar Pinto
相关产品推荐
相关产品推荐

