解決Access連線 accdb 不可識別的資料庫格式異常

無名_四葉草發表於2020-04-04

轉自:http://www.cnblogs.com/Capricornus/archive/2011/09/26/2191485.html

在Access07之前的資料庫字尾名均為*.mdb 而連線字串寫成Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myFolder\*.mdb ;Persist Security Info=False;

但是Access07和Access10將字尾名改為了*.accdb。而通過上述連線的話就會報出"不可識別的資料庫格式"異常。

需要注意的是Microsoft.Jet.OLEDB.4.0的Oledb的連線方式是比較老的連線方式,而07以後的Oledb連線方式將改成Microsoft.ACE.OLEDB.12.0。

改後的連線變成了Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\*.accdb;Persist Security Info=False;

 

 

送給新手的一個小竅門:

在asp.net中經常把連線字串寫在web.config中。但是access的連線字串是需要資料庫的絕對位置。即 碟符:/資料夾/檔案 這樣就導致經常把檔案拷貝後需要改路徑的問題。其實完全可以通過程式來獲得資料庫檔案的絕對路徑。具體如下:

web.config中只寫資料庫檔名 (一般會把資料庫檔案放在App_Data資料夾下,因為有一定的安全性)

<appSettings>
        <add key="ConnString" value="App_Data\ManageDB.accdb"/>
    </appSettings>


然後在DBHelper類獲得字串的寫上如下方法:

public static string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + AppDomain.CurrentDomain.BaseDirectory + ConfigurationSettings.AppSettings["ConnString"];


 

相關文章