C# ConfigHelper 辅助类介绍

时间:2023-11-20 21:53:09 

//==============================================
//        FileName: ConfigManager
//        Description: 静态方法业务类,用于对C#、ASP.NET中的WinForm & WebForm 项目程序配置文件
//             app.config和web.config的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作。

//==============================================
using System;
using System.Data;
using System.Configuration;
using System.Web;

using System.Collections.Generic;
using System.Text;
using System.Xml;

public enum ConfigurationFile
{
    AppConfig=1,
    WebConfig=2
}

/// <summary>
/// ConfigManager 应用程序配置文件管理器
/// </summary>
public class ConfigManager
{
    public ConfigManager()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }


    /// <summary>
    /// 对[appSettings]节点依据Key值读取到Value值,返回字符串
    /// </summary>
    /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
    /// <param name="key">要读取的Key值</param>
    /// <returns>返回Value值的字符串</returns>
    public static string ReadValueByKey(ConfigurationFile configurationFile, string key)
    {
        string value = string.Empty;
        string filename = string.Empty;
        if (configurationFile.ToString()==ConfigurationFile.AppConfig.ToString())
        {
            filename = System.Windows.Forms.Application.ExecutablePath + ".config";
        }
        else
        {
            filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
        }

        XmlDocument doc = new XmlDocument();
        doc.Load(filename); //加载配置文件

        XmlNode node = doc.SelectSingleNode("//appSettings");   //得到[appSettings]节点

        ////得到[appSettings]节点中关于Key的子节点
        XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");

        if (element != null)
        {
            value = element.GetAttribute("value");
        }

        return value;
    }

    /// <summary>
    /// 对[connectionStrings]节点依据name值读取到connectionString值,返回字符串
    /// </summary>
    /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
    /// <param name="name">要读取的name值</param>
    /// <returns>返回connectionString值的字符串</returns>
    public static string ReadConnectionStringByName(ConfigurationFile configurationFile, string name)
    {
        string connectionString = string.Empty;
        string filename = string.Empty;
        if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
        {
            filename = System.Windows.Forms.Application.ExecutablePath + ".config";
        }
        else
        {
            filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
        }

        XmlDocument doc = new XmlDocument();
        doc.Load(filename); //加载配置文件

        XmlNode node = doc.SelectSingleNode("//connectionStrings");   //得到[appSettings]节点

        ////得到[connectionString]节点中关于name的子节点
        XmlElement element = (XmlElement)node.SelectSingleNode("//add[@name='" + name + "']");

        if (element != null)
        {
            connectionString = element.GetAttribute("connectionString");
        }

        return connectionString;
    }

    /// <summary>
    /// 更新或新增[appSettings]节点的子节点值,存在则更新子节点Value,不存在则新增子节点,返回成功与否布尔值
    /// </summary>
    /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
    /// <param name="key">子节点Key值</param>
    /// <param name="value">子节点value值</param>
    /// <returns>返回成功与否布尔值</returns>
    public static bool UpdateOrCreateAppSetting(ConfigurationFile configurationFile, string key, string value)
    {
        bool isSuccess = false;
        string filename = string.Empty;
        if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
        {
            filename = System.Windows.Forms.Application.ExecutablePath + ".config";
        }
        else
        {
            filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
        }

        XmlDocument doc = new XmlDocument();
        doc.Load(filename); //加载配置文件

        XmlNode node = doc.SelectSingleNode("//appSettings");   //得到[appSettings]节点

        try
        {
            ////得到[appSettings]节点中关于Key的子节点
            XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");

            if (element != null)
            {
                //存在则更新子节点Value
                element.SetAttribute("value", value);
            }
            else
            {
                //不存在则新增子节点
                XmlElement subElement = doc.CreateElement("add");
                subElement.SetAttribute("key", key);
                subElement.SetAttribute("value", value);
                node.AppendChild(subElement);
            }

            //保存至配置文件(方式一)
            using (XmlTextWriter xmlwriter = new XmlTextWriter(filename, null))
            {
                xmlwriter.Formatting = Formatting.Indented;
                doc.WriteTo(xmlwriter);
                xmlwriter.Flush();
            }

            isSuccess = true;
        }
        catch (Exception ex)
        {
            isSuccess = false;
            throw ex;
        }

        return isSuccess;
    }

    /// <summary>
    /// 更新或新增[connectionStrings]节点的子节点值,存在则更新子节点,不存在则新增子节点,返回成功与否布尔值
    /// </summary>
    /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
    /// <param name="name">子节点name值</param>
    /// <param name="connectionString">子节点connectionString值</param>
    /// <param name="providerName">子节点providerName值</param>
    /// <returns>返回成功与否布尔值</returns>
    public static bool UpdateOrCreateConnectionString(ConfigurationFile configurationFile, string name, string connectionString, string providerName)
    {
        bool isSuccess = false;
        string filename = string.Empty;
        if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
        {
            filename = System.Windows.Forms.Application.ExecutablePath + ".config";
        }
        else
        {
            filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
        }

        XmlDocument doc = new XmlDocument();
        doc.Load(filename); //加载配置文件

        XmlNode node = doc.SelectSingleNode("//connectionStrings");   //得到[connectionStrings]节点

        try
        {
            ////得到[connectionStrings]节点中关于Name的子节点
            XmlElement element = (XmlElement)node.SelectSingleNode("//add[@name='" + name + "']");

            if (element != null)
            {
                //存在则更新子节点
                element.SetAttribute("connectionString", connectionString);
                element.SetAttribute("providerName", providerName);
            }
            else
            {
                //不存在则新增子节点
                XmlElement subElement = doc.CreateElement("add");
                subElement.SetAttribute("name", name);
                subElement.SetAttribute("connectionString", connectionString);
                subElement.SetAttribute("providerName", providerName);
                node.AppendChild(subElement);
            }

            //保存至配置文件(方式二)
            doc.Save(filename);

            isSuccess = true;
        }
        catch (Exception ex)
        {
            isSuccess = false;
            throw ex;
        }

        return isSuccess;
    }

    /// <summary>
    /// 删除[appSettings]节点中包含Key值的子节点,返回成功与否布尔值
    /// </summary>
    /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
    /// <param name="key">要删除的子节点Key值</param>
    /// <returns>返回成功与否布尔值</returns>
    public static bool DeleteByKey(ConfigurationFile configurationFile, string key)
    {
        bool isSuccess = false;
        string filename = string.Empty;
        if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
        {
            filename = System.Windows.Forms.Application.ExecutablePath + ".config";
        }
        else
        {
            filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
        }

        XmlDocument doc = new XmlDocument();
        doc.Load(filename); //加载配置文件

        XmlNode node = doc.SelectSingleNode("//appSettings");   //得到[appSettings]节点

        ////得到[appSettings]节点中关于Key的子节点
        XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");

        if (element != null)
        {
            //存在则删除子节点
            element.ParentNode.RemoveChild(element);
        }
        else
        {
            //不存在
        }

        try
        {
            //保存至配置文件(方式一)
            using (XmlTextWriter xmlwriter = new XmlTextWriter(filename, null))
            {
                xmlwriter.Formatting = Formatting.Indented;
                doc.WriteTo(xmlwriter);
                xmlwriter.Flush();
            }

            isSuccess = true;
        }
        catch (Exception ex)
        {
            isSuccess = false;
        }

        return isSuccess;
    }

    /// <summary>
    /// 删除[connectionStrings]节点中包含name值的子节点,返回成功与否布尔值
    /// </summary>
    /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param>
    /// <param name="name">要删除的子节点name值</param>
    /// <returns>返回成功与否布尔值</returns>
    public static bool DeleteByName(ConfigurationFile configurationFile, string name)
    {
        bool isSuccess = false;
        string filename = string.Empty;
        if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString())
        {
            filename = System.Windows.Forms.Application.ExecutablePath + ".config";
        }
        else
        {
            filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config";
        }

        XmlDocument doc = new XmlDocument();
        doc.Load(filename); //加载配置文件

        XmlNode node = doc.SelectSingleNode("//connectionStrings");   //得到[connectionStrings]节点

        ////得到[connectionStrings]节点中关于Name的子节点
        XmlElement element = (XmlElement)node.SelectSingleNode("//add[@name='" + name + "']");

        if (element != null)
        {
            //存在则删除子节点
            node.RemoveChild(element);
        }
        else
        {
            //不存在
        }

        try
        {
            //保存至配置文件(方式二)
            doc.Save(filename);

            isSuccess = true;
        }
        catch (Exception ex)
        {
            isSuccess = false;
        }

        return isSuccess;
    }

}

标签:ConfigHelper
0
投稿

猜你喜欢

  • Android studio实现简易计算器App功能

    2023-03-07 07:57:57
  • Spring Boot 2.7.6整合redis与低版本的区别

    2023-11-11 19:44:56
  • android实现蓝牙文件发送的实例代码,支持多种机型

    2023-08-17 11:07:56
  • android实现打地鼠游戏

    2023-09-25 08:45:59
  • SpringBoot整合ES-Elasticsearch的实例

    2022-12-29 03:30:40
  • android预置默认的语音信箱号码具体实现

    2022-08-22 07:51:59
  • Java如何利用递归计算出阶乘

    2023-02-08 12:43:03
  • Java压缩文件工具类ZipUtil使用方法代码示例

    2022-11-26 02:21:32
  • Java连接ftp服务器实例代码

    2022-04-26 23:12:37
  • 外层竖向ScrollView,里层横向ScrollView滑动冲突的解决方法

    2022-07-19 14:46:37
  • Spring整合Quartz实现动态定时器的示例代码

    2022-10-22 06:48:17
  • Java编程实现A*算法完整代码

    2022-06-18 12:28:57
  • java实现计算器功能

    2022-10-28 06:52:09
  • Java并发编程ThreadLocalRandom类详解

    2021-07-30 17:56:03
  • C#关于类的只读只写属性实例分析

    2021-06-12 04:24:11
  • 简单讲解Android开发中触摸和点击事件的相关编程方法

    2023-03-30 12:29:10
  • C#采用mouse_event函数实现模拟鼠标功能

    2023-07-07 16:09:54
  • 解决Spring国际化文案占位符失效问题的方法

    2022-10-20 23:42:23
  • 如何通过JVM角度谈谈Java的clone操作

    2023-10-13 09:54:40
  • java线程并发控制同步工具CountDownLatch

    2022-09-02 12:18:06
  • asp之家 软件编程 m.aspxhome.com