2012-09-25 29 views
-1

直到現在我一直在使用下面的連接字符串:如何在同一個C#字符串賦值中使用@符號和字符串變量?

public static String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Ahmad\documents\visual studio 2010\Projects\DBtestApp1\DBtestApp1\TestDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

然而,由於MDF文件在同一目錄下的EXE運行本身,因爲該目錄可以改變,我現在被檢索使用Directory.GetCurrentDirectory()當前目錄..

的問題是,一個字符串賦值,例如這不起作用:

connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=\"" + currentDirectory + "TestDB.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True";

其中currentDirectory保留輸出Directory.GetCurrentDirectory() ..

那麼最新的解決方案是什麼?

+0

你想分配'static'字段嗎?你從哪裏做的?發佈一些代碼。 – Jon

+0

定義「不起作用」...你得到一個編譯器錯誤? – HaemEternal

回答

1

這實際上應該可以工作,但取決於返回值Directory.GetCurrentDirectory()您的路徑可能會被打破。

而不是你的字符串中串聯的路徑,你應該使用內System.IO爲此提供Path.Combine(),它將處理部件之間的附加/缺少反斜槓要連接:

string DbFile = Path.Combine(Directory.GetCurrentDirectory(), "TestDB.mdf"); 

然後,您應該能夠只是這個字符串添加到您的完整的連接字符串,這可能會使用String.Format()以及完成:

string connectionString = String.Format(@"...AttachDbFilename={0};Integrated...", Path.Combine(Directory.GetCurrentDirectory(), "TestDB.mdf")); 

我沒有試過,但它不應該工作只使用.\TestDB.mdf作爲文件名?還是必須是絕對路徑?

0

你總是可以把它放在App_Data文件夾中(理想的位置),並像這樣調用它。

Data Source=|DataDirectory|\TestDB.mdf; 
相關問題