cnblogs/dcrenl/64位系统使用Access 数据库文件的彻底解决方法.html
2024-09-24 12:43:01 +08:00

18 lines
3.7 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>最近,有<a href="http://www.pwmis.com/sqlmap" target="_blank">PDF.NET</a>用户问我怎么在64位系统下无法访问Access数据库的问题我第一反应是我怎么没有遇到呢今天一看自己的VS和Office都是32位版本的所以在VS里面调试访问Access是没有问题的但是直接使用编译好的.NET程序访问Access就出问题了</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;未在本地计算机上注册&ldquo;Microsoft.Jet.Oledb.4.0&rdquo;提供程序。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;于是又在公司的电脑上Win7 64位做了实验发现跟家里面的Win8.1 64位 问题一样,上网搜索了一下,大部分都建议将.NET程序编译的时候目标平台设定为 x86 ,我试了下,果然成功。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;但是,如果你的.NET程序是别人编译好的且在64位系统上运行要访问Access数据库怎么办呢</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;首先想到,看能否通过应用程序配置文件,将.NET程序配置成运行在 32位 系统下,找了很久资料,无果,放弃。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;再想想是不是跟自己的Office是32位有关呢</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;关键问题不在于是Access 2010还是Access 2013而已不必钻牛角尖何不求其次安装一个Access 2007/2010的Database Engine不就行了。</p>
<p>&nbsp;</p>
<p>解决办法:</p>
<p>&nbsp;&nbsp;&nbsp;下载安装<a href="http://www.microsoft.com/en-us/download/details.aspx?id=13255" target="_blank">Microsoft Access Database Engine 2010 Redistributable</a>28MB共有32bit<a href="http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe" target="_blank">下载</a>和64bit<a href="http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_x64.exe" target="_blank">下载</a>两个版本具体要安装哪个要看你的Office程序是32bit的还是64bit的比如我的PC是64bit的Win8 Pro但是我Office的程序是32bit的所以我应当安装AccessDatabaseEngine.exe32bit</p>
<p>&nbsp;&nbsp;&nbsp;打开你的.NET应用程序配置文件应用程序名.configWeb应用程序为 Web.config),设置<a title="数据" href="http://www.haogongju.net/tag/%E6%95%B0%E6%8D%AE" target="_blank">数据</a>库连接字符串的Provide Microsoft.ACE.O<a title="LED" href="http://www.haogongju.net/tag/LED" target="_blank">LED</a>B.12.0,例如标准连接字符串为:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Data.accdb;Persist Security Info=False;"</p>
<p>再次运行程序OK数据库连接成功一切正常。</p>
<p>注意64位系统下一定要修改提供程序为 Microsoft.ACE.OLEDB.12.0,而此时的文件名,可以是 早期的 mdb文件也可以是新的 accdb 文件。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你虽然是64位系统,但是你的Office 是32位的所以你只能安装32位的ACE驱动因此你的.NET应用程序也只能发布成32位的如果编译成anycpu版本还是无法访问ACE。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PS:如果你发布成x86格式的目标平台并且不想使用accdb格式的Access数据库文件那么就不必安装上面的32位ACE驱动了省得折腾-《)</p>
<p>&nbsp;注意:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你安装了 64位的Access程序但是在VS2013中调试Web网站应用程序的时候提示&ldquo;Microsoft.ACE.OLEDB.12.0&rdquo; 未注册请在VS的选项中项目和解决方案Web项目勾选64位的 IIS Express 。</p>
<p>转自:http://www.cnblogs.com/bluedoctor/p/3925871.html</p>