64位系統使用Access 資料庫檔案的徹底解決方案

來源:互聯網
上載者:User

標籤:

最近,有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 。

64位系統使用Access 資料庫檔案的徹底解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.