Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 528|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-5-26 22:18:42 | 显示全部楼层 |阅读模式

    最近,有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 程序,下载地址 ,     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,            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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-23 11:55 , Processed in 0.064585 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表