C#读写参数到APP.Config

C#读写参数到APP.Config

介绍

系统在开发时,可能需要设置默认参数,比如数据库的链接参数,某个参数的默认数据等等。对于这些数据,可直接在app.config中读取。

在读写时,需要先了解configurationmanager类。

命名空间:System.Configuration 程序集: System.Configuration.dll

此类的作用为提供对客户端应用程序配置文件的访问。 此类不能被继承。

属性描述
AppSettings获取当前应用程序默认配置的AppSettingSection数据
ConnectionStrings获取当前应用程序默认配置的AppSettingSection数据
方法描述
GetSection检索当前应用程序默认配置的指定配置节
OpenExeConfiguration检索当前应用程序默认配置的指定配置节
OpenMachineConfiguration将当前计算机的配置文件作为 Configuration 对象打开。
OpenMappedExeConfiguration将当前计算机的配置文件作为 Configuration 对象打开。
OpenMappedMachineConfiguration将计算机配置文件作为 Configuration对象打开,该对象使用指定的文件映射。
RefreshSection刷新命名节,这样在下次检索它时将从磁盘重新读取它。

程序Demo

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace demo132_APP.config的读写
{
    class Program
    {
        static void Main(string[] args)
        {

            ReadAllSetting();
            ReadSetting("a");
            ReadSql();
 
            Console.ReadKey();
            //使用connectionStrings,常用于设置数据库链接参数

        }
        static void ReadAllSetting()
        {
            //读取App.config中Appsettingsection数据
            try
            {
                var appsettings = ConfigurationManager.AppSettings;
                if(appsettings.Count==0)
                {
                    Console.WriteLine("AppSetting is empty");
                }
                else
                {
                    foreach(var key in appsettings.AllKeys)
                    {
                        Console.WriteLine("Key:{0},Value:{1}", key, appsettings[key]);
                    }
                }
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error Reading Appsettings");
            }
        }
        static void ReadSetting(string key)
        {
            //根据key值,读取appsettings中的值
            try
            {
                var appsetting = ConfigurationManager.AppSettings;
                string result = appsetting[key] ?? "Not Found";//??代表当appsetting为null时,result为Not Found,否则为appsetting[key]
                Console.WriteLine(result);
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading Appsetting");
            }


        }
        static void AddUpdateSettings(string key,string value)
        {
            try
            {
                var configfile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var settings = configfile.AppSettings.Settings;
                if(settings[key]==null)
                {
                    settings.Add(key, value);
                }
                else
                {
                    settings[key].Value = value;
                }
                configfile.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection(configfile.AppSettings.SectionInformation.Name);
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading in Appsettings");
            }
        }
        static void ReadSql()
        {
            try
            {
                var sqlcon = ConfigurationManager.ConnectionStrings["Sqlcon"].ConnectionString;
                if(sqlcon != null)
                {
                    Console.WriteLine(sqlcon.ToString());
                }
                else
                {
                    Console.WriteLine("Nothing");
                }
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error in connectionstring");
            }
            
            
        }
    }
}

常见错误

使用App.config配置参数,读取参数出现错误

“System.Configuration.ConfigurationErrorsException”类型的未经处理的异常在 System.Configuration.dll 中发生。其他信息: 配置系统未能初始化

解决办法:如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。",将appSettings放到configSections 后,则正常。

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值