04-配置文件的访问
19.1.2 配置文件的访问
我们可以通过ConfigurationManager类访问配置文件,要使用该类,必须在工程里添加system.configuration.dll程序集的引用。在解决方案管理器中右键单击工程名称,在右键菜单中选择“添加引用”,在“net”选项卡下找到System.Configuration,单击“确定”按钮完成程序集的引入。另外,还应该在文件头添加对System.Configuration命名空间的引用。
1.访问appSettings配置节
在使用ConfigurationManager读取配置节数据的时候,我们读取的是*.exe.config文件中的配置数据,而不是App.config文件中的配置数据。如果我们要读取上一节中配置文件中的串口名,程序代码如下。
01 public static void Main()
02 {
03 foreach (string key in ConfigurationManager.AppSettings)
04 {
05 (key =="PortName")
06 {
07 System.out.println("PortName:"+ConfigurationManager.AppSettings[strKey]);
08 }
09 }
10 }
如果我们想把串口名改为“COM2”,同时添加一个key为“IP”,value为“172.21.2.136”的键值对,程序代码如下。
01 string assemblyConfigFile = System.Reflection.Assembly.GetEntryAssembly().Location;
02 Configuration config = ConfigurationManager.OpenExeConfiguration(assemblyConfigFile);
03 AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
04 appSettings.Settings.Remove("PortName");
05 appSettings.Settings.Add("PortName", "COM2");
06 cfa.AppSettings.Settings.Add("IP", "172.21.2.136")
07 config.Save();
2.访问connectionStrings配置节
connectionStrings配置节是专门用来存/取数据库的连接字符串,其访问方式与appConfig配置节类似,下面的程序用来读取前面connectionStrings配置节中SQL Server数据库连接字符串。
01 public static void Main()
02 {
03 string connectionString =
04 ConfigurationManager.ConnectionStrings[“SqlServerStr“].ConnectionString.ToString();
05 Console.WriteLine(connectionString);
06 }
修改连接字符串的操作同样需要先删除连接字符串的配置节的内容,然后再添加同名的配置节键,下面的代码用来修改前面connectionStrings配置节中Oracle数据库的连接字符串。
01 public static void Main()
02 {
03 bool isModified = false; //记录该连接串是否已经存在
04 //如果要更改的连接串已经存在
05 if (ConfigurationManager.ConnectionStrings[”OracleStr”] != null)
06 {
07 isModified = true;
08 }
09 //新建一个连接字符串实例
10 ConnectionStringSettings mySettings =
11 new ConnectionStringSettings(”OracleStr”, “Data Source=TORCL;User Id=orcl;Password=orcl;”);
12 // 打开可执行的配置文件*.exe.config
13 Configuration config =
14 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
15 // 如果连接串已存在,首先删除它
16 if (isModified)
17 {
18 config.ConnectionStrings.ConnectionStrings.Remove(”OracleStr”);
19 }
20 // 将新的连接串添加到配置文件中
21 config.ConnectionStrings.ConnectionStrings.Add(mySettings);
22 // 保存对配置文件所作的更改
23 config.Save(ConfigurationSaveMode.Modified);
24 / / 强制重新载入配置文件的ConnectionStrings配置节
25 ConfigurationManager.RefreshSection("ConnectionStrings");
26 }
3.访问自定义配置节
对于自定义的配置节,我们通过ConfigurationSettings类的静态方法GetConfig来获取自定义配置节的信息,下面的程序用来读取自定义配置节Fruit和Bank的数据。
01 //访问配置节Fruit
02.IDictionary IDFruit = (IDictionary)ConfigurationSettings.GetConfig("Fruit");
03 string str = (string)Fruit["setting1"] +" "+(string) Fruit["setting2"];
04 Console.writeLine(str);
05 //访问配置节Bank
06 IDictionary IDBank = (IDictionary)ConfigurationSettings.GetConfig("Bank");
07 string[] keys=new string[IDBank.Keys.Count];
08 string[] values=new string[IDBank.Keys.Count];
09 IDBank.Keys.CopyTo(keys,0);
10 IDBank.Values.CopyTo(values,0);
11 MessageBox.Show(keys[0]+" "+values[0]);