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(下载)两个版本,具体要安装哪个要看你的程序是32bit的还是64bit的,比如:我的PC是64bit的Win8 Pro,但是我开发的程序是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 文件。

此问题受影响的 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

64位系统使用Access 数据库文件的彻底解决方法,布布扣,bubuko.com

时间: 08-19

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

window2008 64位系统没有office组件问题分析及解决

服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败. 网上传阅无数解决方式: 普通版本步骤 1.在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 2.依次双击"组

关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”

使用APlayer开发了一个C#程序,原先开发电脑是32位的,安装电脑也是32位,只需要将相应的文件打包,然后在system32文件夹中放入atl71.dll和D3DX9_43.dll,项目运转正常.但后来因为系统升级,换了台win10 64位的系统,开发时只需将项目的平台换成x86,但是打包后安装却报错,且system32下的两个dll已存在.经过一天的摸索,因为64位系统有个SysWOW64  文件夹,将所需的两个dll放入此文件夹,问题得已解决. 网上查出两个文件夹的区别 \Windows

64位系统中连接Access数据库文件的一个问题

近日在windows 7 64位系统中编译以前写的程序,发现在连接Access数据库时总是出现异常,提示“Microsoft.Jet.OLEDB.4.0”未在本机注册,同样的代码在32位的xp系统中却没有问题,经过一番搜索后找到一个比较简便的处理办法,特在此做一下记录. 原因估计:数据库文件使用Access2003格式的*.mdb文件,其对应的OLEDB 4.0在win7 64位系统中支持不是很好. 处理办法:将数据库文件升级为Access2007格式的*.accdb文件,按如下修改连接字符串,

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法

服务器是windows server2008 64位系统,项目中需要用到Microsoft.Office.Interop组件,包括excel.word.ppt等. 重点一: 步骤 1.在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 2.依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置" 3.在"

dll文件32位64位检测工具以及Windows文件夹SysWow64的坑(很详细,还有自动动手编程探测dll)

阅读目录 dll文件不匹配导致数据库无法启动 究竟是System32还是SysWow64 区分dll文件32位64位的程序让我倍感迷惑 再次判断究竟是System32还是SysWow64——意想不到的坑 Program Files (x86)与Program Files 32位程序真的需要访问System32吗 32位程序与64位程序的区别总结 参考资料 自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program

C# 32位程序在64位系统下注册表操作

在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64位程序冲突 相关资料请查看32位程序在64位系统下运行的重定向机制 下面是以获取操作系统安装密匙KEY的案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using

windows 64位系统下 apache+php+mysql

环境搭建 第一步: 64位系统下的 apache.php .mysql软件下载 apache2.4 http://www.apachelounge.com/download/win64/ php5.5 http://windows.php.net/qa/ PHP 5.5 (5.5.17RC1) 就这个版本 mysql http://www.mysql.com/downloads/mysql/ MySQL Community Server 5.6.20 这个是安装版当然你下载zip包的也可以 第二

关于32位程序在64位系统下运行中需要注意的重定向问题(有图,很清楚)

0x00 前言 最近学习了[email protected]的文章<Persistence Architecture Matters>,恰巧解决了我之前遇到过的一个问题,理清了文件和注册表重定向中需要注意的细节 大家在学习的过程中难免也会碰到,所以在此分享一下. <Persistence Architecture Matters>的链接:https://labs.mwrinfosecurity.com/blog/persistence-architecture-matters/ 0