开发者社区> 橘子红了呐> 正文

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

简介:
+关注继续查看

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

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

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

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

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

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

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

 

解决办法:

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

②   打开你的.NET应用程序配置文件(应用程序名.config,Web应用程序为 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位系统,但是你的Office 是32位的,所以你只能安装32位的ACE驱动,因此你的.NET应用程序也只能发布成32位的,如果编译成anycpu版本,还是无法访问ACE。

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

 注意:

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

此问题受影响的 PDF.NET 开发框架相关程序:

1,SimpleAccessWinForm 程序,下载地址 ,Example     PDF.Net_V4.6 WinForm 数据表单实例    

example,            526K, uploaded             Mar 27, 2013             -            809 downloads

运行该程序后,请修改 SimpleAccessWinForm.config 文件的内容,如果是第一次运行,程序会自动创建该文件 并自动创建数据库文件,文件内容比如:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
        <add name="AccessConn" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=TEST.mdb"
            providerName="Access" />
    </connectionStrings>
</configuration>
复制代码

2,PDF.NET集成开发工具,下载地址:Application     安装程序    

application,            1576K, uploaded             May 25, 2011             -            1943 downloads
下载后,请找到运行目录下的 子目录 Config ,然后打开配置文件 DataConnectionCfg.xml ,找到相关的配置节:
 
复制代码
<?xml version="1.0" encoding="utf-8" ?>
<DataConnections>
    <Group Name="默认分组">
        <Connection DbType="SQLServer" Name="default" ConnectionString="Data Source=.;Integrated Security=True" />
        <Connection DbType="SQLServer" Name=".\SQLEXPRESS" ConnectionString="Data Source=.\SQLEXPRESS;Integrated Security=True" />
        <Connection DbType="SQLServerCe" Name="SQLCE" ConnectionString="Data Source=E:\DAC\LocalDB.sdf;Password=sasa;Persist Security Info=True" />
    </Group>
    <Group Name="XX二期">
        <Connection DbType="SQLite" Name="SQLite" ConnectionString="Data Source=E:\jjzd.db" Provider="PWMIS.DataProvider.Data.SQLite,DataAccess"/>
        <Connection DbType="SQLServer" Name="192.168.50.1" ConnectionString="server=192.168.50.5;uid=sa;pwd=sasa" Provider=""/>
    </Group>
    <Group Name="分组2">
        <Connection DbType="Access" Name="default" ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=TEST.mdb" Provider="Access"/>
        <Connection DbType="SQLServer" Name="50.25" ConnectionString="server=192.168.50.25;uid=sa;pwd=sasa" Provider=""/>
     
    </Group>
</DataConnections>
复制代码

经过这样的配置以后,就可以直接打开集成开发工具了,如下图:

 

总结:

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




    本文转自深蓝医生博客园博客,原文链接:http://www.cnblogs.com/bluedoctor/p/3925871.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何使用trace模式运行BRF+应用
Created by Wang, Jerry, last modified on Dec 12, 2014
17 0
Linux:删除文件后不释放磁盘空间解决方法
Linux:删除文件后不释放磁盘空间解决方法
44 0
SSH 文件上传错误:encountered 1 errors during the transfer终极解决方法:
以下方法简单排序,从简单到复杂: 法一:在SSH Secure File Transfer(上传文件那个),打开“Operation”菜单,打开“File Transfer Mode”子菜单,再选择“Binary”,OK! 法二:把服务器上同名文件删掉再传 法三:如果文件在桌面上,将要上传的文件复制到其它分区,再上传! 法四:到 http://winscp.
852 0
ACCESS 触发器delete table事件变量使用及连续删除
    ACCESS的TABLE DELETE 事件触发后,会出现一个[旧]的记录,这条记录非常有用,可以用来作条件判断使用。     如下图的table event事件中,删除一条记录后,可以使用[旧]记录连接执行多个删除相关记录的操作。
593 0
使用ServiceStack构建Web服务
提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛。首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Building Cross-Platform Web Services with ServiceStack,所以这里简要介绍一下如何使用ServiceStack快速建立一个WebService服务。
980 0
nginx1.8.1配置SSL使用HTTPS及access.log配置记录
nginx1.8.1配置SSL使用HTTPS及access.log配置记录
1740 0
通过ActionTrail监控AccessKey的使用
[ActionTrail](https://www.aliyun.com/product/actiontrail)是阿里云官方提供的审计产品,支持审计超过四十款云产品,具体情况请查看文档:[支持的云服务列表](https://help.aliyun.com/document_detail/28829.html)。如果有监控AccessKey的需求,那么ActionTrail会是您的得力助手。本文将
1460 0
3402
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载