Asp.net相對路徑連線Access資料庫的方法
Asp.net連線Access資料庫時,通常我們將資料庫連線字串寫到web.config配置檔案中。而連線字串中的資料庫路徑只能用絕對路徑形式表示,這樣如果要移動程式,就必須要修改web.config 中資料庫連線字串的資料庫路徑,很麻煩。如果寫成相對路徑形式如:~/database/test.mdb 也是不正確的。
例如:
<connectionstrings>
<add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=~/database/test.mdb" providername="System.Data.OleDb" />
</connectionstrings>
上面寫法是錯誤的。
目前常見解決方法有2種:
1、通過使用 DataDirectory 關鍵詞方法
從Asp.net 2.0 開始有App_Data目錄來專門存放資料檔案,它可以用來放Access,SQL Server Express、XML等資料檔案。可以把Access資料庫檔案放在App_Data資料夾中,然後使用關鍵詞 DataDirectoty來獲取路徑。
<connectionstrings>
<add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=|DataDirectory|test.mdb" providername="System.Data.OleDb" />
</connectionstrings>
2、在web.config 檔案中設定兩個字串
在 web.config 檔案中設定兩個字串,一個是驅動字串,另一個是 Access 資料庫檔案的相對路徑。使用時用 Server.MapPath() 來獲取絕對路徑,然後組合出來的連線字串就可以使用了。
<connectionStrings>
<add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source={0}"
providerName="System.Data.OleDb" />
</connectionStrings>
<appSettings>
<add key="AccessPath" value="~/Database/test.mdb"/>
</appSettings>
後臺使用時 程式碼如下:
private string GetConnStr()
{
string connStr = WebConfigurationManager.ConnectionStrings["Access"].ConnectionString;
connStr = connStr.Replace("{0}", Server.MapPath(WebConfigurationManager.AppSettings["AccessPath"].ToString()));
return connStr;
}