2011-11-16 92 views
4

我正在開發一個Web應用程序。我需要獲取數據庫文件路徑。 在c#中獲取數據庫文件路徑的方法是什麼? 例如:如何獲取當前連接的數據庫文件路徑?

E:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Data/MyDatabase.mdf 
+3

爲什麼這個問題標記asp.net?這與SQL Server比ASP更重要。 –

+0

@Merlyn,我的項目與數據庫連接,ConnectionString在webconfig中聲明。所以我很好奇我是否可以通過webconfig獲取數據庫路徑。 :) – DEN

+0

@DEN你可以在'web.config'中使用'connectionString'來對你的數據庫執行查詢。請參閱下面的答案。 – 2011-11-16 03:29:43

回答

12
select physical_name 
from sys.database_files 
where type = 0 

以上是SQL查詢來執行。下面是C#代碼,將檢索和這些數據存儲在一個string

SqlConnection DbConn = new SqlConnection(ConfigurationManager.ConnectionStrings["CStringName"].ConnectionString); 
SqlCommand GetDataFile = new SqlCommand(); 
GetDataFile.Connection = DbConn; 
GetDataFile.CommandText = "select physical_name from sys.database_files where type = 0"; 

try 
{ 
    DbConn.Open(); 
    string YourDataFile = (string) GetDataFile.ExecuteScalar(); 
    DbConn.Close(); 
} 
catch (Exception ex) 
{ 
    DbConn.Dispose(); 
} 
-1

Server.mappath將返回路徑

+2

MapPath將服務器上的虛擬路徑映射到物理路徑。沒有到mdf文件的虛擬路徑。 – Jason

+0

這是假設SQL Server與網站運行在同一臺計算機上,可能會或可能不會。此外,Server.MapPath並非真正用於虛擬目錄層次結構之外的文件路徑(但可能是可能的),請參閱此處瞭解更多信息:http://stackoverflow.com/questions/3422270/how使用服務器映射到位置外網站文件夾在ASP網 – Rich

+1

@Jason:至少不應該有... –

相關問題