2013-07-17 75 views
3

我已經建立了使用Visual Studio 2010中一個數據庫,在我的數據訪問文件,我寫我的連接字符串Visual Studio連接字符串 - 相對文件路徑?

@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\SOFTWARE\Database\persondb.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 

,你可以看到我的數據庫是

C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\Software\Database\persondb.mdf 

我的解決辦法是

C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\Software\Management System\Management System.sln 

數據庫的連接字符串每次從一臺PC轉移到另一臺時都必須更改。我不想那樣做。所以我試圖改變相對文件路徑的絕對文件路徑(關於我的.sln文件)。我改變了我的連接字符串像這樣 -

@"Data Source=.\SQLEXPRESS;AttachDbFilename=..\Database\persondb.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 

但它沒有工作。那麼我的問題是什麼? windows通常會識別* .. *作爲目錄上的命令。相對文件路徑不工作連接字符串?

回答

5

的問題是,在運行時你的執行了:

C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\Software\Management System\bin\Debug 

所以相對路徑從有:

..\..\..\Database ... 

然而,這種方法更根本的問題。這隻適用於開發。在部署系統時,您不會將Database文件夾三個目錄放在您的上面,它實際上是一個子目錄。

更合適的方法可能是在解決方案中製作一個Database文件夾,將數據庫放在那裏,然後將其設置爲Copy Always。連接字符串然後將是:

Database\ ... 

並且這將在開發和生產。

+0

噢日Thnx,讓我試試這個 –

+0

沒有.. \符號似乎並沒有工作。在解決方案中嵌套數據庫文件夾也沒有。嗯,我想我必須使用絕對路徑總是:( –

+0

+1複製總是' – Javid

1

你不必寫絕對路徑,你需要把在App_Data文件夾中的數據庫文件,並添加下面的連接字符串中web.config

<connectionStrings> 
    <add name="PersonDBCS" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\persondb.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/> 
</connectionStrings> 

其中|DataDirectory|App_Data文件夾。

然後你就可以訪問它這樣說:

using System.Configuration; 
... 
string conStr = ConfigurationManager.ConnectionStrings["PersonDBCS"].ConnectionString 
+0

好吧,我使用Windows窗體,所以沒有App_Data文件夾在我的解決方案。那麼DataDirectory |意味着什麼?調試文件夾?? –