2014-10-08 25 views
2

修改連接字符串,所以我的目標是有一個「設置表」,它允許用戶編輯連接字符串(通過改變數據庫名稱/服務器位置。與變量

這樣做的原因是,它的IT需求以便能夠在服務器位置很快由可能沒有任何C#經驗的人員改變時更改(前端GUI)

我在app.config中創建了連接字符串,但找不到指定變量的方法在conn字符串裏面可以改變嗎?我已經使用項目屬性創建了一些應用程序範圍的設置。這是我的app.config

要做到這一點
<connectionStrings> 
    <add name="xxxx" 
     connectionString="Data Source=ServerIP;Initial Catalog=DBName;Persist Security Info=True;User ID=user;Password=password" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 
<applicationSettings> 
    <xxx.Properties.Settings> 
     <setting name="ServerIP" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="DBName" serializeAs="String"> 
      <value /> 
     </setting> 
    </xxx.Properties.Settings> 
</applicationSettings> 
+1

你可能想利用看看這個: http://stackoverflow.com/questions/719928/how-do-you-modify-the-web-config-appsettings-at-runtime – Hatjhie 2014-10-08 01:07:37

+0

嗨,你知道我是否可以使用它的一個連接字符串呢?謝謝 – AlexP2014 2014-10-08 03:57:16

+0

是的,你可以。有可能的。 – Hatjhie 2014-10-08 04:10:27

回答

2

一種方法是使用連接字符串中的配置文件中的部分佔位符({0}{1}),像這樣:

Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID=user;Password=password 

,然後通過string.Format時填寫這些您可以在代碼中閱讀連接字符串,如下例所示。 (注:這假定您已經添加了一個參考System.Configuration.dll,以及您檢索到的應用程序設置成兩個變量,serverIPdbName

using System.Configuration; 

... 

string connectionString = string.Format(
    ConfigurationManager.ConnectionStrings["xxxx"].ConnectionString, 
    serverIP, 
    dbName); 
+0

好的非常感謝,生病給了一個鏡頭。 所以基本上如果我想要更多的變量,我只是添加更多的佔位符{3}和{4}等等創建的變量的順序? – AlexP2014 2014-10-08 04:31:02

+1

是的,但不要跳過'{2}'。 :-) – 2014-10-08 04:36:26

+0

woops哈哈謝謝! – AlexP2014 2014-10-08 05:06:28