.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配置项。

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【引用】phpmyadmin提示Access denied for user 'root'@'localhost' (using password: NO)的解决办法...

一、错误内容 今天用phpmyadmin连接mysql里面的某个数据库时时遇到了下面的提示&#xff1a; #1045 - Access denied for user rootlocalhost (using password: NO) phpMyAdmin 试图连接到 MySQL 服务器&#xff0c;但服务器拒绝连接。您应该检查 config.inc.php 中的主机、用户…

H3C 帧中继初级配置(二)

配置思路&#xff1a; 1、先配置FR-SWITCH 2、再配置RTA、RTB、RTC FR-SWITCH详细配置步骤如下&#xff1a; [FR-Switch]fr switching //启动路由器帧中继功能 [FR-Switch]interface s6/0 [FR-Switch-Serial6/0]link-protocol fr //链路协议封闭为FR [FR-Switch-Serial6/0]fr…

Java并发同步器AQS(AbstractQueuedSynchronizer)学习笔记(2)

2019独角兽企业重金招聘Python工程师标准>>> 学习了AbstractQueuedSynchronizer 之后(Condition没有在上文做笔记&#xff0c;当应该不难理解)&#xff0c;接下来笔者就尝试着分析在JUC包中的各个同步器&#xff0c;其语义是如何实现的。 ReentrantLock 内部类Sync继…

Ural 1627 Join(生成树计数)

http://acm.timus.ru/problem.aspx?space1&num1627 生成树计数的题&#xff0c;直接用Matrix-Tree定理就可以解决问题了。 代码如下&#xff1a; View Code 1 #include <cstdio>2 #include <cstring>3 #include <algorithm>4 5 using namespace std;6 …

Navicat for MySQL工具创建mysql数据库定时器

步骤1&#xff1a; 步骤二&#xff1a; 效果图:

魔兽争霸3地图(WarIII Maps):三国猛兽传

魔兽争霸3地图&#xff08;WarIII Maps&#xff09;&#xff1a;三国猛兽传三国猛兽传三国时期&#xff0c;连年战乱&#xff0c;天降异象&#xff0c;所有战力无双的英雄&#xff0c;外表全都变成了凶悍的猛兽…………其貌虽毁&#xff0c;其心不改攻城略地&#xff0c;百战成…

Oracle SQL语句执行步骤

Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1、当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法、表名、字段名等相关信息&#xff08;如下图&#xff09;&#xff0c;这过程会花比较长的时间&#xff0c;因为它要分…

Ubuntu 找不到libc.so.6

2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu 上&#xff0c;其实这个库是存在的&#xff0c;只是地方换了&#xff0c;在"/lib/i386-linux-gnu/"下面&#xff0c;我们只需创建一个链接即可。使用下面的命令&#xff1a; rootubuntuJack:/lib/i3…

matlab学习:人脸识别之LBP (Local Binary Pattern)

1.算法简介 LBP是一种简单&#xff0c;有效的纹理分类的特征提取算法。LBP算子是由Ojala等人于1996年提出的&#xff0c;主要的论文是"Multiresolution gray-scale and rotation invariant texture classification with local binary patterns", pami, vol 24, no.7,…

大流量 网站

引用&#xff1a;http://www.admin10000.com/document/948.html 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c; 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数…

Portal-Basic Java Web 应用开发框架:应用篇(十一) —— 整合 Spring

Portal-Basic Java Web应用开发框架&#xff08;简称 Portal-Basic&#xff09;是一套功能完备的高性能Full-Stack Web应用开发框架&#xff0c;内置稳定高效的MVC基础架构和DAO框架&#xff08;已内置Hibernate、MyBatis和JDBC支持&#xff09;&#xff0c;集成 Action拦截、F…

Windows 8实用窍门系列:9.Windows 8中使用FlipView

FlipView控件类似于翻页控件&#xff0c;并且是现成的翻页按钮&#xff0c;你只需要为其增加数据项即可。本文讲述两种方式的FlipView项目和展示。 一&#xff1a;直接前台FlipViewItem <FlipView><FlipViewItem><Image Stretch"Uniform" Source"…

推荐系统相关资源汇总

2019独角兽企业重金招聘Python工程师标准>>> 为了更好的学习推荐系统&#xff0c;本博文将个人知道的关于推荐系统的相关资源整理汇总&#xff0c;拿出来与大家分享。本博文每月更新一次&#xff0c;长期维护&#xff0c;如果你有好的关于推荐系统的资源&#xff0c…

tcp工作原理

TCP 三次握手建立连接 TCP 建立连接全过程解释 客户端发送 SYN 给服务器&#xff0c;说明客户端请求建立连接&#xff1b;服务端收到客户端发的 SYN&#xff0c;并回复 SYNACK 给客户端&#xff08;同意建立连接&#xff09;&#xff1b;客户端收到服务端的 SYNACK 后&#xf…

物联网碰到云计算会怎么样?

如果提起物联网和云计算&#xff0c;熟悉安防行业的朋友们可能都不会太过陌生。没错&#xff0c;就是这两项新生技术的问世&#xff0c;给我们安防行业带来了许多全新的理念。而在不少人的眼中&#xff0c;物联网和云计算在潜意识中也是有不少联系的&#xff0c;但是如果要细细…

CentOS FTP安装及配置

CentOS FTP安装及配置 LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd.访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式: (1)anonymous(…

【FPGA】Verilog 实践:优先级编码器 | Priority encoder

0x00 优先级编码器&#xff08;Priority encoder&#xff09; "能将多个二进制输入压缩成更少数目输出的电路或算法的编码器" 优先级编码器是一种编码器&#xff0c;它考虑了两个或更多输入位同时变为 1 但没有收到输入的情况。当输入进来时&#xff0c;优先级编码…

linux系统用户迁移

今天登陆上来发现好久都没有写博客了。 刚刚做了一个linux用户迁移&#xff0c;记录下&#xff0c;以后用到的话&#xff0c;查起来方便。希望对大家有帮助。 环境&#xff1a;我们原先的一台服务器由于过保所以替换新的服务器&#xff0c;但是由于用户数较多&#xff0c;如果一…

vm虚拟远程部署windows驱动

注意打印机是用com1端口&#xff0c;应该提前删除 bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 bcdedit /dbgsettings 以下两条是配置调式环境系统用 bcdedit /set testsigning on bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS 在…

Android:SharedPreferences详解+示例

为什么80%的码农都做不了架构师&#xff1f;>>> 一、简介SharedPreferences是一种轻型的数据存储方式&#xff0c;它的本质是基于XML文件存储key-value键值对数据&#xff0c;通常用来存储一些简单的配置信息。 二、存储位置 在/data/data/<包名>/shared_pre…