64位系统使用Access数据库文件的彻底解决方法

64位系统使用Access数据库文件的彻底解决方法

最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VSOffice都是32位版本的,所以在VS里面调试访问Access是没有问题的,但是直接使用编译好的.NET程序访问Access,就出问题了,报:

未在本地计算机上注册“Microsoft.Jet.Oledb.4.0”提供程序。

于是,又在公司的电脑上(Win7 64位)做了实验,发现跟家里面的Win8.1 64位问题一样,上网搜索了一下,大部分都建议将.NET程序编译的时候,目标平台设定为x86,我试了下,果然成功。

但是,如果你的.NET程序是别人编译好的,且在64位系统上运行,要访问Access数据库,怎么办呢?

首先想到,看能否通过应用程序配置文件,将.NET程序配置成运行在32位系统下,找了很久资料,无果,放弃。

再想想,是不是跟自己的Office32位有关呢?

关键问题不在于是Access 2010还是Access 2013而已,不必钻牛角尖,何不求其次,安装一个Access 2007/2010Database Engine不就行了。

解决办法:

①下载安装Microsoft Access Database Engine 2010 Redistributable28MB),共有32bit(下载)和64bit(下载)两个版本,具体要安装哪个要看你的Office程序是32bit的还是64bit的,比如:我的PC64bitWin8 Pro,但是我Office的程序是32bit的,所以我应当安装AccessDatabaseEngine.exe32bit);

②打开你的.NET应用程序配置文件(应用程序名.configWeb应用程序为 Web.config),设置数据库连接字符串的Provide Microsoft.ACE.OLEDB.12.0,例如标准连接字符串为:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Data.accdb;Persist Security Info=False;"

再次运行程序,OK,数据库连接成功,一切正常。

注意:64位系统下一定要修改提供程序为Microsoft.ACE.OLEDB.12.0,而此时的文件名,可以是早期的mdb文件,也可以是新的accdb文件。

如果你虽然是64位系统,但是你的Office32位的,所以你只能安装32位的ACE驱动,因此你的.NET应用程序也只能发布成32位的,如果编译成anycpu版本,还是无法访问ACE

PS:如果你发布成x86格式的目标平台,并且不想使用accdb格式的Access数据库文件,那么就不必安装上面的32ACE驱动了。

注意:如果你安装了64位的Access程序,但是在VS2013中调试Web网站应用程序的时候,提示“Microsoft.ACE.OLEDB.12.0 未注册,请在VS的选项中,项目和解决方案,Web项目,勾选64位的IIS Express

总结: 64位系统下.NET访问Access 数据库,最彻底的方法是安装64位的Access数据访问驱动安装程序 并使用新的Access提供程序  Microsoft.ACE.OLEDB.12.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值