应用配置文件

发现比ini要好用,随程式一起的 

        /// <summary>
        /// 读配置文件
        /// </summary>
        /// <param name="keyName"></param>
        /// <returns></returns>
        public string Read_KeyValue(string keyName)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            string temp ="";
            try
            {
                temp = config.AppSettings.Settings[keyName].Value;//读
            }
            catch {    }
            return temp;
        }
        /// <summary>
        /// 写配置文件
        /// </summary>
        /// <param name="keyName"></param>
        /// <param name="keyValue"></param>
        public void Write_Value(string keyName, string keyValue)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//打开
            string key = config.AppSettings.Settings.AllKeys.FirstOrDefault(o => o.Equals(keyName));//找key
            if (!string.IsNullOrEmpty(key))//如有key存在就删除掉,然后重写
            { config.AppSettings.Settings.Remove(key); }
            config.AppSettings.Settings.Add(keyName, keyValue);//新增
            config.Save(ConfigurationSaveMode.Modified);//保存
            System.Configuration.ConfigurationManager.RefreshSection("appSettings");//一定要刷新哦
        }

Demo下载 

下面是修改ConnectionString

        void Temp_Update_Database(string dataBaseName)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            string connStr = config.GetConnectionStringsConfig("Connect");

            string[] temp = connStr.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            temp[0] = temp[0].Substring(0, temp[0].IndexOf("=") + 1) + dataBaseName;
            string connStrNew = string.Join(";", temp);
            //修该数据库地址,然后更新
            config.UpdateConnectionStringsConfig("Connect", connStrNew, "System.Data.SqlClient");

            //下面是对修改的内容做验证.
            connStr = config.GetConnectionStringsConfig("Connect");//这种是一直有改变的
            System.Configuration.ConfigurationManager.RefreshSection("connectionStrings");//一定要刷新哦
            connStr = System.Configuration.ConfigurationManager.ConnectionStrings["Connect"].ToString();
        }

//上面是修改数据库的封装,要修改其它的内容自行修改

下面是扩展静态类

namespace WindowsFormsApp8
{
    public static class ConfigureAppConfig
    {
        ///<summary>依据连接串名字connectionName返回数据连接字符串 </summary>
        ///<param name="connectionName">连接串的</param>
        ///<param name="config"></param>
        ///<returns></returns>
        public static string GetConnectionStringsConfig(this Configuration config, string connectionName)
        {
            string connectionString = config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString;
            Console.WriteLine(connectionString);
            return connectionString;
        }
        ///<summary>
        ///更新连接字符串 
        ///</summary>
        ///<param name="newName">连接字符串名称</param>
        ///<param name="newConString">连接字符串内容</param>
        ///<param name="newProviderName">数据提供程序名称</param>
        ///<param name="config">Configuration实例</param>
        public static void UpdateConnectionStringsConfig(this Configuration config, string newName, string newConString, string newProviderName)
        {
            bool isModified = false;
            //记录该连接串是否已经存在     
            //如果要更改的连接串已经存在     
            if (config.ConnectionStrings.ConnectionStrings[newName] != null)
            { isModified = true; }

            //新建一个连接字符串实例     
            ConnectionStringSettings mySettings = new ConnectionStringSettings(newName, newConString, newProviderName);

            // 如果连接串已存在,首先删除它     
            if (isModified)
            {
                config.ConnectionStrings.ConnectionStrings.Remove(newName);
            }
            // 将新的连接串添加到配置文件中.     
            config.ConnectionStrings.ConnectionStrings.Add(mySettings);
            // 保存对配置文件所作的更改     
            config.Save(ConfigurationSaveMode.Modified);
        }

        ///<summary>
        ///返回config文件中appSettings配置节的value项 
        ///</summary>
        ///<param name="strKey"></param>
        ///<param name="config">Configuration实例</param>
        ///<returns></returns>
        public static string GetAppSettingsItemValue(this Configuration config, string strKey)
        {
            foreach (KeyValueConfigurationElement key in config.AppSettings.Settings)
            {
                if (key.Key == strKey)
                {
                    return config.AppSettings.Settings[strKey].Value;
                }
            }
            return string.Empty;
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值