64位系統使用Access 資料庫文

2021-07-28 16:08:02 字數 1153 閱讀 4559

最近,有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不就行了。

解決辦法:

① ② 

開啟你的.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驅動了,省得折騰:-《)

此問題受影響的 pdf.net 開發框架相關程式:

pdf.net_v4.6 winform 資料表單例項

64位系統asp連線access資料庫

今天在使用asp 後台時發現在64bit windows2008下,訪問資料庫失敗,報錯驅動程式未安裝。網上絕大多數的方法都是到應用程式池的高階設定中,把允許32位程式啟用,的確可以解決。這樣就相當於程式使用32位的效能,那麼公升級作業系統公升級伺服器還有什麼意義呢。個人覺得更科學的方式是修改此as...

32位系統和64位系統

前言 眾所周知,我們通常說作業系統是32位還是64位說的其實是32位處理器 cpu 還是64位處理器 cpu windows系統有32位和64位之分,下面我們來總結一下32位系統和64位系統的原理 區別以及如何判斷。我們現在所稱的計算機系統是32位或64位主要依據的是cpu解析的字組大小 字組大小 ...

Linux 關於64位系統

1.判斷linux系統是32位還是64位的方法 getconf long bit 2.判斷乙個檔案是32位還是64位的方法 file lib x.so libsyssp.so elf 32 bit lsb shared object,intel 80386,version 1 sysv stripp...