AppConfig读写类

来源:互联网 发布:淘宝供货平台 编辑:程序博客网 时间:2024/06/05 10:23
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Configuration;
  5. using System.Xml;
  6. namespace WWBClassLib.Tools
  7. {
  8.     class AppConfig
  9.     {
  10.         ///<summary>
  11.         ///依据连接串名字connectionName返回数据连接字符串
  12.         ///</summary>
  13.         ///<param name="connectionName"></param>
  14.         ///<returns></returns>
  15.         private static string GetConnectionStringsConfig(string connectionName)
  16.         {
  17.             string connectionString =
  18.                     ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();
  19.             Console.WriteLine(connectionString);
  20.             return connectionString;
  21.         }
  22.         ///<summary>
  23.         ///更新连接字符串
  24.         ///</summary>
  25.         ///<param name="newName">连接字符串名称</param>
  26.         ///<param name="newConString">连接字符串内容</param>
  27.         ///<param name="newProviderName">数据提供程序名称</param>
  28.         private static void UpdateConnectionStringsConfig(string newName,
  29.             string newConString,
  30.             string newProviderName)
  31.         {
  32.             bool isModified = false;    //记录该连接串是否已经存在
  33.             //如果要更改的连接串已经存在
  34.             if (ConfigurationManager.ConnectionStrings[newName] != null)
  35.             {
  36.                 isModified = true;
  37.             }
  38.             //新建一个连接字符串实例
  39.             ConnectionStringSettings mySettings =
  40.                 new ConnectionStringSettings(newName, newConString, newProviderName);
  41.             // 打开可执行的配置文件*.exe.config
  42.             Configuration config =
  43.                 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  44.             // 如果连接串已存在,首先删除它
  45.             if (isModified)
  46.             {
  47.                 config.ConnectionStrings.ConnectionStrings.Remove(newName);
  48.             }
  49.             // 将新的连接串添加到配置文件中.
  50.             config.ConnectionStrings.ConnectionStrings.Add(mySettings);
  51.             // 保存对配置文件所作的更改
  52.             config.Save(ConfigurationSaveMode.Modified);
  53.             // 强制重新载入配置文件的ConnectionStrings配置节
  54.             ConfigurationManager.RefreshSection("ConnectionStrings");
  55.         }
  56.         ///<summary>
  57.         ///返回*.exe.config文件中appSettings配置节的value项
  58.         ///</summary>
  59.         ///<param name="strKey"></param>
  60.         ///<returns></returns>
  61.         private static string GetAppConfig(string strKey)
  62.         {
  63.             foreach (string key in ConfigurationManager.AppSettings)
  64.             {
  65.                 if (key == strKey)
  66.                 {
  67.                     return ConfigurationManager.AppSettings[strKey];
  68.                 }
  69.             }
  70.             return null;
  71.         }
  72.         ///<summary>
  73.         ///在*.exe.config文件中appSettings配置节增加一对键、值对
  74.         ///</summary>
  75.         ///<param name="newKey"></param>
  76.         ///<param name="newValue"></param>
  77.         private static void UpdateAppConfig(string newKey, string newValue)
  78.         {
  79.             bool isModified = false;
  80.             foreach (string key in ConfigurationManager.AppSettings)
  81.             {
  82.                 if (key == newKey)
  83.                 {
  84.                     isModified = true;
  85.                 }
  86.             }
  87.             // Open App.Config of executable
  88.             Configuration config =
  89.                 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  90.             // You need to remove the old settings object before you can replace it
  91.             if (isModified)
  92.             {
  93.                 config.AppSettings.Settings.Remove(newKey);
  94.             }
  95.             // Add an Application Setting.
  96.             config.AppSettings.Settings.Add(newKey, newValue);
  97.             // Save the changes in App.config file.
  98.             config.Save(ConfigurationSaveMode.Modified);
  99.             // Force a reload of a changed section.
  100.             ConfigurationManager.RefreshSection("appSettings");
  101.         }
  102.         /// <summary>
  103.         /// 写入Key,Value 到XML文件
  104.         /// </summary>
  105.         /// <param name="Key"></param>
  106.         /// <param name="Value"></param>
  107.         public static void SaveConfig(string Key, string Value)
  108.         {
  109.             XmlDocument doc = new XmlDocument();
  110.             //获得配置文件的全路径
  111.             string strFileName = AppDomain.CurrentDomain.BaseDirectory.ToString() + "App.config";
  112.             doc.Load(strFileName);
  113.             //找出名称为“add”的所有元素
  114.             XmlNodeList nodes = doc.GetElementsByTagName("add");
  115.             for (int i = 0; i < nodes.Count; i++)
  116.             {
  117.                 //获得将当前元素的key属性
  118.                 XmlAttribute att = nodes[i].Attributes["key"];
  119.                 //根据元素的第一个属性来判断当前的元素是不是目标元素
  120.                 if (att.Value == Key)
  121.                 {
  122.                     //对目标元素中的第二个属性赋值
  123.                     att = nodes[i].Attributes["value"];
  124.                     att.Value = Value;
  125.                     break;
  126.                 }
  127.             }
  128.             //保存上面的修改
  129.             doc.Save(strFileName);
  130.         }
  131.     }
  132. }