簡體   English   中英

如何在連接字符串中使用變量?

[英]How can I use variable in connection string?

我在連接字符串變量方面遇到麻煩。 在我的app.config數據庫路徑中看起來不錯,但是在形式上,該連接字符串出現錯誤。 當我嘗試添加時:

_connectionString = "Data Source = (LocalDB)\\MSSQLLocalDB; " +
    "AttachDbFilename = \"|DataDirectory|\\gazi_db.mdf\"; " +
    "Integrated Security = True; Connect Timeout = 30";

數據庫無法正常工作; 它無法在退出時保存數據。 但這工作正常:

connectionString = "Data Source = (LocalDB)\\MSSQLLocalDB; " +
        "AttachDbFilename = \"C:\\Users\\Can\\Desktop\\c_sharp_gazi_installer" +
        "\\Gazi Installer\\gazi_installer\\gazi_db.mdf\"; " +
        "Integrated Security = True; Connect Timeout = 30";

我怎樣才能解決這個問題?

編輯:我希望這會工作

string DataDirectory = "";
string folder = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().CodeBase);
AppDomain.CurrentDomain.SetData("DataDirectory", folder);

_connectionString = _connectionString = "Data Source = (LocalDB)\\MSSQLLocalDB; " +
        "AttachDbFilename = \"" + DataDirectory + "\\gazi_db.mdf\"; " +
        "Integrated Security = True; Connect Timeout = 30";

但是它仍然給我sqlclient sqlexception錯誤。

EDIT2:此錯誤表明連接已打開。 我不明白為什么這也不起作用:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder["Data Source"] = "(LocalDB)\\MSSQLLocalDB";
builder["AttachDbFilename"] = @"C:\Users\Can\\Desktop\c_sharp_gazi_installer\Gazi Installer\gazi_installer\gazi_db.mdf";
builder["Integrated Security"] = true;
builder["Connect Timeout"] = 30;

請有人幫忙。 我要瘋了。

首先,可以使用@“ symbol”避免使用太多轉義字符。 然后,您在哪里定義“ DataDirectory”變量?

.NET具有連接字符串生成器類。 使用此功能,您可以將每個值(即數據源,集成安全性)分別設置為變量,然后使用.ConnectionString屬性獲取連接字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM