zoukankan      html  css  js  c++  java
  • .NET配置文件读写实例(附SosoftConfigHelper类)

    配置文件在软件开发中起到举足轻重的作用,可以说不可或缺。.NET程序可使用.config文件作为配置文件,例如WinForm程序的*.app.config、Web程序的web.config。.config文件是标准的XML文件。本实例可读取、修改和添加app.confing或者web.config文件的appSettings。SosoftConfigHelper类还可以读写ConnectionStrings。

    使用Visual Studio创建一个WinForm项目,在窗体上建立控件,如图:

    键值列表中的值是运行结果。

    然后在更新配置按钮事件方法中加入如下代码:

    SosoftConfigHelper.UpdateAppConfig(textBox_key.Text, textBox_value.Text);

    窗体的代码如下:

    /*
    Copyright (c) 2012  柔城  All rights reserved.
     * 
     * sosoft.cnblogs.com
     */
    using System;
    using System.Configuration;
    using System.Windows.Forms;
    using Sosoft.Cnblogs.Com.Helper;
    
    namespace Sosoft.Cnblogs.Com
    {
        public partial class MainForm : Form
        {
            public MainForm()
            {
                InitializeComponent();
            }
    
            private void button_update_Click(object sender, EventArgs e)
            {
                SosoftConfigHelper.UpdateAppConfig(textBox_key.Text, textBox_value.Text);
                GetKeyValueList();
            }
    
            private void GetKeyValueList()
            {
                textBox_keyValueList.Text = string.Empty;
                foreach (string key in ConfigurationManager.AppSettings)
                {
                    textBox_keyValueList.Text += key + " : " + SosoftConfigHelper.GetAppConfig(key) + "\r\n";
                }
            }
    
            private void MainForm_Load(object sender, EventArgs e)
            {
                GetKeyValueList();
            }
        }
    }

    记得要添加System.Configuration命名空间和程序集的引用。

    另外新建一个类,命名SosoftConfigHelper.cs,这是配置文件读写类,代码如下:

      1 /*
      2 Copyright (c) 2012  柔城  All rights reserved.
      3  * 
      4  * sosoft.cnblogs.com
      5  */
      6 using System;
      7 using System.Configuration;
      8 
      9 namespace Sosoft.Cnblogs.Com.Helper
     10 {
     11     /// <summary>
     12     /// Sosoft配置文件辅助类
     13     /// </summary>
     14     public class SosoftConfigHelper
     15     {
     16         /// <summary>
     17         ///  读取appStrings配置节, 返回*.exe.config文件中appSettings配置节的value项
     18         /// </summary>
     19         /// <param name="strKey"></param>
     20         /// <returns></returns>
     21         public static string GetAppConfig(string strKey)
     22         {
     23             foreach (string key in ConfigurationManager.AppSettings)
     24             {
     25                 if (key == strKey)
     26                 {
     27                     return ConfigurationManager.AppSettings[strKey];
     28                 }
     29             }
     30             return null;
     31         }
     32 
     33 
     34         /// <summary>
     35         /// 更新appStrings配置节,在*.exe.config文件中appSettings配置节增加一对键、值对
     36         /// </summary>
     37         /// <param name="newKey"></param>
     38         /// <param name="newValue"></param>
     39         public static void UpdateAppConfig(string newKey, string newValue)
     40         {
     41             bool isModified = false;
     42             foreach (string key in ConfigurationManager.AppSettings)
     43             {
     44                 if (key == newKey)
     45                 {
     46                     isModified = true;
     47                 }
     48             }
     49 
     50             // Open App.Config of executable
     51             Configuration config =
     52                 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
     53             // You need to remove the old settings object before you can replace it
     54             if (isModified)
     55             {
     56                 config.AppSettings.Settings.Remove(newKey);
     57             }
     58             // Add an Application Setting.
     59             config.AppSettings.Settings.Add(newKey, newValue);
     60             // Save the changes in App.config file.
     61             config.Save(ConfigurationSaveMode.Modified);
     62             // Force a reload of a changed section.
     63             ConfigurationManager.RefreshSection("appSettings");
     64         }
     65 
     66 
     67 
     68         /// <summary>
     69         /// 读取connectionStrings配置节,依据连接串名字connectionName返回数据连接字符串
     70         /// </summary>
     71         /// <param name="connectionName"></param>
     72         /// <returns></returns>
     73         public static string GetConnectionStringsConfig(string connectionName)
     74         {
     75             string connectionString =
     76                     ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();
     77             Console.WriteLine(connectionString);
     78             return connectionString;
     79         }
     80 
     81 
     82         /// <summary>
     83         /// 更新connectionStrings配置节, 更新连接字符串
     84         /// </summary>
     85         /// <param name="newName"> 连接字符串名称 </param>
     86         /// <param name="newConString"> 连接字符串内容 </param>
     87         /// <param name="newProviderName"> 数据提供程序名称 </param>
     88         public static void UpdateConnectionStringsConfig(string newName,
     89             string newConString,
     90             string newProviderName)
     91         {
     92             bool isModified = false;    // 记录该连接串是否已经存在
     93             // 如果要更改的连接串已经存在
     94             if (ConfigurationManager.ConnectionStrings[newName] != null)
     95             {
     96                 isModified = true;
     97             }
     98             // 新建一个连接字符串实例
     99             ConnectionStringSettings mySettings =
    100                 new ConnectionStringSettings(newName, newConString, newProviderName);
    101             // 打开可执行的配置文件*.exe.config
    102             Configuration config =
    103                 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    104             // 如果连接串已存在,首先删除它
    105             if (isModified)
    106             {
    107                 config.ConnectionStrings.ConnectionStrings.Remove(newName);
    108             }
    109             // 将新的连接串添加到配置文件中.
    110             config.ConnectionStrings.ConnectionStrings.Add(mySettings);
    111             // 保存对配置文件所作的更改
    112             config.Save(ConfigurationSaveMode.Modified);
    113             // 强制重新载入配置文件的ConnectionStrings配置节
    114             ConfigurationManager.RefreshSection("ConnectionStrings");
    115         }
    116     }
    117 }

    最后右击项目选择“添加-新建项”,然后选择“应用程序配置文件”,点击添加按钮就创建配置文件app.config。

    app.config的格式如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="SosoftKey" value="sosoftValue" />
        <add key="SosoftURL" value="sosoft.cnblogs.com" />
        <add key="SosoftProject" value="sosoft.codeplex.com" />
      </appSettings>
    </configuration>

    按F5运行,可以添加、修改appSettings配置项和列出所有appSettings配置项。

    柔城配置文件读写实例源代码下载地址:https://files.cnblogs.com/sosoft/SosoftConfig.rar

  • 相关阅读:
    对抽象编程:接口和抽象类
    工厂方法模式
    用例建模Use Case Modeling
    分析一套源代码的代码规范和风格并讨论如何改进优化代码
    结合工程实践选题调研分析同类软件产品
    如何提高程序员的键盘使用效率
    Java复习面试指南01什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?
    Mac系统下MySql下载MySQL5.7及详细安装流程
    Java复习面试指南02JDK和JRE的区别?程序从源代码到运行经历哪几步?
    毕业半年小结
  • 原文地址:https://www.cnblogs.com/sosoft/p/sosoftconfighelper.html
Copyright © 2011-2022 走看看