64位繫統使用Access 數據庫文件的徹底解決方法(C# dotnet)
- 2017-10-01 05:15:00
- 深藍醫生 轉貼
- 9031
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 程序,下載地址 , PDF.Net_V4.6 WinForm 數據錶單實例
運行該程序後,請修改 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集成開髮工具,下載地址: 安裝程序
<?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
- office課程播放地址及課程明細
- Excel Word PPT Access VBA等Office技巧學習平颱
- 將( .accdb) 文件格式數據庫轉換爲早期版本(.mdb)的文件格式
- 將早期的數據庫文件格式(.mdb)轉換爲 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數據庫引擎和訪問連接引擎以阻止對遠程數據庫的訪問(remote table)
- Access 365 /Access 2019 數據庫中哪些函數功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些電腦無法正常註冊的解決辦法(regsvr32註冊時卡住)
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下齣現橫曏滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節點行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列錶等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調用WebService(直接Post方式)併解析返迴的XML
- 早期PB程序連接Sqlserver齣現錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由於文件不存在,不是一箇MMC控製颱,或者用後來的MMC版
- sql server連接不瞭的解決辦法
- localhost與127.0.0.1區彆
- Roych的淺談數據庫開髮繫列(Sql Server)
- sqlserver 自動備份對備份目録沒有存取權限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業管理器 SQLServer2005_SSMSEE
聯繫人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |