.Net配置文件读取及修改方法封装(未加密)

.Net平台下开发时,需要将有些数据存储在XML文档中,而我们的首选即是默认新建的app.Config了。新建流程如下:

第一步:在启动工程上右键->添加->新建项。如下图:

第二步:新建配置文件,修改名称,切记要将默认的App1.config修改为App.config,因为默认寻找的配置文件名称是App.config。如果不改名称将找不到,如下图:

第三步:添加相应的connectionStrings和appSettings,如下图:

那么至此,我们的配置文件已经创建好了。那么创建好的配置文件是方便我们使用的,不管是我们读取配置文件中的值还是我们要修改配置文件中的有些配置项。当系统交付客户时,不能每次直接让客户操作配置,更何况一般配置文件都是要加密的。所以我在其他博客园找了一些封装好的方法可供参考:

代码如下:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Configuration;
  6 
  7 namespace WPFControlsDemo.Control
  8 {
  9     /// <summary>
 10     /// 配置文件帮助类
 11     /// </summary>
 12     public class ConfigHelper
 13     {
 14         #region ConnectionStrings
 15 
 16         /// <summary>
 17         /// 根据连接串名字connectionName返回数据连接字符串
 18         /// </summary>
 19         /// <param name="connectionName">连接串名字</param>
 20         /// <returns>数据连接字符串</returns>
 21         private static string GetConnectionStringsConfig(string connectionName)
 22         {
 23             string connectionString = ConfigurationManager.ConnectionStrings[connectionName].ToString();
 24             return connectionString;
 25         }
 26 
 27         /// <summary>
 28         /// 更新连接字符串
 29         /// </summary>
 30         /// <param name="newName">连接字符串名称</param>
 31         /// <param name="newConString">连接字符串内容</param>
 32         /// <param name="newProviderName">数据提供程序名称</param>
 33         private static void UpdateConnectionStringConfig(string newName, string newConString, string newProviderName)
 34         {
 35             //记录该连接字符串是否已经存在
 36             bool isModified = false;
 37             //如果要更改的连接字符串已经存在
 38             if (ConfigurationManager.ConnectionStrings[newName] != null)
 39             {
 40                 isModified = true;
 41             }
 42 
 43             //新建一个连接字符串实例
 44             ConnectionStringSettings mySettings = new ConnectionStringSettings(newName, newConString, newProviderName);
 45             Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
 46 
 47             //如果连接串已存在,首先删除它
 48             if (isModified)
 49             {
 50                 config.ConnectionStrings.ConnectionStrings.Remove(newName);
 51             }
 52             //将新的连接串添加到配置文件
 53             config.ConnectionStrings.ConnectionStrings.Add(mySettings);
 54             //保存对配置文件所做的更改
 55             config.Save(ConfigurationSaveMode.Modified);
 56             //强制重新载入配置文件的ConnectionStrings配置节
 57             ConfigurationManager.RefreshSection("ConnectionStrings");
 58         }
 59 
 60         #endregion
 61 
 62         #region AppStrings
 63 
 64         /// <summary>
 65         /// 返回config文件中的appSettings配置节的value项
 66         /// </summary>
 67         /// <param name="strKey">appSettings配置节关键字</param>
 68         /// <returns>APPSettings配置节值</returns>
 69         private static string GetAppConfig(string strKey)
 70         {
 71             foreach (string key in ConfigurationManager.AppSettings)
 72             {
 73                 if (key == strKey)
 74                 {
 75                     return ConfigurationManager.AppSettings[strKey];
 76                 }
 77             }
 78 
 79             return null;
 80         }
 81 
 82         /// <summary>
 83         /// 在config文件中appSettings配置节增加一对键,值对
 84         /// </summary>
 85         /// <param name="newKey"></param>
 86         /// <param name="newValue"></param>
 87         private static void UpdateAppConfig(string newKey, string newValue)
 88         {
 89             bool isModified = false;
 90             foreach (string key in ConfigurationManager.AppSettings)
 91             {
 92                 if (key == newKey)
 93                 {
 94                     isModified = true;
 95                 }
 96             }
 97             //打开配置文件
 98             Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
 99             //删除已存在的节点
100             if (isModified)
101             {
102                 config.AppSettings.Settings.Remove(newKey);
103             }
104             //增加appSettings节点
105             config.AppSettings.Settings.Add(newKey, newValue);
106             //保存配置文件
107             config.Save(ConfigurationSaveMode.Modified);
108             //强制刷新
109             ConfigurationManager.RefreshSection("appSettings");
110         }
111 
112         #endregion
113     }
114 }

转载于:https://www.cnblogs.com/weitao/p/4114577.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值