web.config或App.config中AttachDBFilenamex相對路徑問題


<add name="employeeManagerConnectionString" connectionString="Data Source=.\SQLExpress;Integrated Security=true;
User Instance=true;
AttachDBFilename=|DataDirectory|\employeeManager.mdf;
Initial Catalog=employeeManager;" providerName="System.Data.SqlClient" />

 

 

webconfig中的數據庫連接是不支持Server.MapPath的,一般我們只能寫上數據庫文件的物理路徑,這給網站遷移帶來很大的不方便。今天在網上找到了一個解決辦法,與大家分享下。看以下代碼:
 
<connectionStrings>
<add name="ConnStr_Access"
     providerName="System.Data.OleDb"
     connectionString=
     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\cms.mdb;"
    />
</connectionStrings>


|DataDirectory|會被自動解析到App_Data

下面是MSDN的說明:

 

使用 DataDirectory 替代字符串

AttachDbFileName 已在 ADO.NET 2.0 中進行了擴展,引入了 |DataDirectory|(包含在管道符號中)替代字符串。DataDirectory 與 AttachDbFileName 結合使用可指示數據文件的相對路徑,允許開發人員創建基於數據庫源的相對路徑(而無需指定完整路徑)的連接字符串。

DataDirectory 點的物理位置取決於應用程序的類型。 在此示例中,要附加的 Northwind.mdf 文件位於應用程序的 \app_data 文件夾中。

Data Source=.\\SQLExpress;Integrated Security=true;
User Instance=true;
AttachDBFilename=|DataDirectory|\app_data\Northwind.mdf;
Initial Catalog=Northwind;

使用 DataDirectory 時,目錄結構中的結果文件的路徑不能高於替代字符串指向的目錄。 例如,如果完全展開的 DataDirectory 為 C:\AppDirectory\app_data,則上面顯示的示例連接字符串有效,因為它在 c:\AppDirectory 之下。 但是,如果嘗試將 DataDirectory 指定為 |DataDirectory|\..\data,將會產生一個錯誤,因為 \data 不是 \AppDirectory 的子目錄。

 

其他資料:

http://blog.csdn.net/heqichanggg/article/details/5784839

http://blog.csdn.net/whuarui2010/article/details/17232505

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM