发现比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;
}
}
}