本文將談?wù)凜#項(xiàng)目實(shí)例中讀取并修改App.config文件,AppConfig最重要的功能就是,它將命令行選項(xiàng)和配置文件選項(xiàng)統(tǒng)一到一種數(shù)據(jù)結(jié)構(gòu)中。盡管這會(huì)導(dǎo)致復(fù)雜化。
C#項(xiàng)目是指一系列獨(dú)特的、復(fù)雜的并相互關(guān)聯(lián)的活動(dòng),這些活動(dòng)有著一個(gè)明確的目標(biāo)或目的,必須在特定的時(shí)間、預(yù)算、資源限定內(nèi),依據(jù)規(guī)范完成。項(xiàng)目參數(shù)包括項(xiàng)目范圍、質(zhì)量、成本、時(shí)間、資源。
1. 向C#項(xiàng)目實(shí)例中的項(xiàng)目添加app.config文件:
右擊C#項(xiàng)目實(shí)例中項(xiàng)目名稱(chēng),選擇“添加”→“添加新建項(xiàng)”,在出現(xiàn)的“添加新項(xiàng)”對(duì)話(huà)框中,選擇“添加應(yīng)用程序配置文件”;如果項(xiàng)目以前沒(méi)有配置文件,則默認(rèn)的文件名稱(chēng)為“app.config”,單擊“確定”。出現(xiàn)在設(shè)計(jì)器視圖中的app.config文件為:
- <?xmlversionxmlversion="1.0"encoding="utf-8" ?>
- <configuration>
</configuration>
在項(xiàng)目進(jìn)行編譯后,在bin\Debuge文件下,將出現(xiàn)兩個(gè)配置文件(以本項(xiàng)目為例),一個(gè)名為“JxcManagement.EXE.config”,另一個(gè)名為“JxcManagement.vshost.exe.config”。***個(gè)文件為項(xiàng)目實(shí)際使用的配置文件,在程序運(yùn)行中所做的更改都將被保存于此;第二個(gè)文件為原代碼“app.config”的同步文件,在程序運(yùn)行中不會(huì)發(fā)生更改.
2. connectionStrings配置節(jié):
請(qǐng)注意:如果您的SQL版本為2005 Express版,則默認(rèn)安裝時(shí)SQL服務(wù)器實(shí)例名為localhost\SQLExpress,須更改以下實(shí)例中“Data Source=localhost;”一句為“Data Source=localhost\SQLExpress;”,在等于號(hào)的兩邊不要加上空格。
-
- <connectionStrings>
<clear /> <addnameaddname="conJxcBook" connectionString="Data Source=localhost;Initial Catalog=jxcbook;User ID=sa;password=********" providerName="System.Data.SqlClient" /> </connectionStrings>
3. appSettings配置節(jié):
appSettings配置節(jié)為整個(gè)程序的配置,如果是對(duì)當(dāng)前用戶(hù)的配置,請(qǐng)使用userSettings配置節(jié),其格式與以下配置書(shū)寫(xiě)要求一樣。
-
- <appSettings>
- <clear />
- <addkeyaddkey="userName"value="" />
- <addkeyaddkey="password"value="" />
- <addkeyaddkey="Department"value="" />
- <addkeyaddkey="returnValue"value="" />
- <addkeyaddkey="pwdPattern"value="" />
- <addkeyaddkey="userPattern"value="" />
- </appSettings>
4.讀取與更新app.config
請(qǐng)注意:要使用以下的代碼訪(fǎng)問(wèn)app.config文件,除添加引用System.Configuration外,還必須在項(xiàng)目添加對(duì)System.Configuration.dll的引用。
4.1 讀取connectionStrings配置節(jié)
- ///<summary>
- ///依據(jù)連接串名字connectionName返回?cái)?shù)據(jù)連接字符串
- ///</summary>
- ///<param name="connectionName"></param>
- ///<returns></returns>
- private static string GetConnectionStringsConfig(string connectionName)
- {
- string connectionString =
- ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();
- Console.WriteLine(connectionString);
- return connectionString;
- }
4.2 更新connectionStrings配置節(jié)
- ///<summary>
- ///更新連接字符串
- ///</summary>
///<param name="newName">連接字符串名稱(chēng)</param> ///<param name="newConString">連接字符串內(nèi)容</param> ///<param name="newProviderName">數(shù)據(jù)提供程序名稱(chēng)</param> private static void UpdateConnectionStringsConfig(string newName, string newConString, string newProviderName) { bool isModified = false; //記錄該連接串是否已經(jīng)存在 //如果要更改的連接串已經(jīng)存在 if (ConfigurationManager.ConnectionStrings[newName] != null) { isModified = true; } //新建一個(gè)連接字符串實(shí)例 ConnectionStringSettings mySettings = new ConnectionStringSettings(newName, newConString, newProviderName); // 打開(kāi)可執(zhí)行的配置文件*.exe.config Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // 如果連接串已存在,首先刪除它 if (isModified) { config.ConnectionStrings.ConnectionStrings.Remove(newName); } // 將新的連接串添加到配置文件中. config.ConnectionStrings.ConnectionStrings.Add(mySettings); // 保存對(duì)配置文件所作的更改 config.Save(ConfigurationSaveMode.Modified); // 強(qiáng)制重新載入配置文件的ConnectionStrings配置節(jié) ConfigurationManager.RefreshSection("ConnectionStrings"); } 4.3 讀取appStrings配置節(jié)
- ///<summary>
- ///返回*.exe.config文件中appSettings配置節(jié)的value項(xiàng)
- ///</summary>
///<param name="strKey"></param> ///<returns></returns> private static string GetAppConfig(string strKey) { foreach (string key in ConfigurationManager.AppSettings) { if (key == strKey) { return ConfigurationManager.AppSettings[strKey]; } } return null; }
4.4 更新connectionStrings配置節(jié)
-
-
private static void UpdateAppConfig(string newKey, string newValue) { bool isModified = false; foreach (string key in ConfigurationManager.AppSettings) { if(key==newKey) { isModified = true; } } Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (isModified) { config.AppSettings.Settings.Remove(newKey); } config.AppSettings.Settings.Add(newKey,newValue); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); }
C#項(xiàng)目實(shí)例中讀取并修改App.config文件就介紹到這里。
【編輯推薦】
- C#字符串操作步驟
- C#集成開(kāi)發(fā)環(huán)境淺析
- Visual C# .NET應(yīng)用程序
- C# TimeLabel控件詳解
- C#復(fù)合控件開(kāi)發(fā)技術(shù)