重拾C#日常積累:config配置檔案的讀寫
注;現在FrameWork2.0以上使用的是:ConfigurationManager或WebConfigurationManager。並且AppSettings屬性是隻讀的,並不支援修改屬性值.文章參考了網上一些內容進行整理輸出。
一、配置檔案的說明
最常見的配置檔案是App.config。應用程式配置檔案是標準的 XML 檔案,XML 標記和屬性是區分大小寫的。它是可以按需要更改的,開發人員可以使用配置檔案來更改設定,而不必重編譯應用程式。配置檔案的根節點是configuration。我們經常訪問的是appSettings,它是由.Net預定義的配置節。我們經常使用的配置檔案的架構是客訴下面的形式。先大概有個印象,通過後面的例項會有一個比較清楚的認識。下面的“配置節”可以理解為進行配置一個XML的節點。
常見配置檔案模式:
<configuration> // 頂層配置節
<configSections> //配置節宣告區域,包含配置節和名稱空間宣告
<section> //配置節宣告
<sectionGroup> //定義配置節組
<section> //配置節組中的配置節宣告
<appSettings> //預定義配置節
<Custom element for configuration section> //配置節設定區域
下面是一個最常見的應用程式配置檔案的例子,只有appSettings節:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="connectionstring" value="User Source=.;Password=;Initial Catalog=test;Provider=SQLOLEDB.1;" />
<add key="TemplatePATH" value="Template" />
</appSettings>
</configuration>
注意:在預定義的 appSettings 節(注意大小寫),有很多的元素,這些元素名稱都是“add”,有兩個屬性分別是“key”和“value”。二、如何使用ConfigurationManager?
1、新增引用:新增System.configguration
2、引用空間
3、App.config配置檔案配置節
常用配置節:
(1)普通配置節
<appSettings>
<add key="COM1" value="COM1,9600,8,None,1,已啟用" />
</appSettings>
(2)資料來源配置節
<connectionStrings>
<add name="kyd" connectionString="server=.;database=UFDATA_999_2017;user=sa;pwd=123"/>
</connectionStrings>
(3)自定義配置節
4、獲取配置的方式
示例:
(1)、AppSettings
//系統自定義Key字首
public static readonly string SysCustomKey = ConfigurationManager.AppSettings["redisKey"] ?? "";
(2)、ConnectionStrings
private static readonly string RedisConnectionString =
ConfigurationManager.ConnectionStrings["RedisExchangeHosts"].ConnectionString;
三、App.config配置檔案讀寫
1、依據連線串名字connectionName返回資料連線字串
//依據連線串名字connectionName返回資料連線字串
public static string GetConnectionStringsConfig(string connectionName)
{
//指定config檔案讀取
string file = System.Windows.Forms.Application.ExecutablePath;
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file);
string connectionString =
config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString();
return connectionString;
}
2、更新連線字串
///<summary>
///更新連線字串
///</summary>
///<param name="newName">連線字串名稱</param>
///<param name="newConString">連線字串內容</param>
///<param name="newProviderName">資料提供程式名稱</param>
public static void UpdateConnectionStringsConfig(string newName, string newConString, string newProviderName)
{
//指定config檔案讀取
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
bool exist = false; //記錄該連線串是否已經存在
//如果要更改的連線串已經存在
if (config.ConnectionStrings.ConnectionStrings[newName] != null)
{
exist = true;
}
// 如果連線串已存在,首先刪除它
if (exist)
{
config.ConnectionStrings.ConnectionStrings.Remove(newName);
}
//新建一個連線字串例項
ConnectionStringSettings mySettings =
new ConnectionStringSettings(newName, newConString, newProviderName);
// 將新的連線串新增到配置檔案中.
config.ConnectionStrings.ConnectionStrings.Add(mySettings);
// 儲存對配置檔案所作的更改
config.Save(ConfigurationSaveMode.Modified);
// 強制重新載入配置檔案的ConnectionStrings配置節
ConfigurationManager.RefreshSection("connectionStrings");
}
3、返回*.exe.config檔案中appSettings配置節的value項
///<summary>
///返回*.exe.config檔案中appSettings配置節的value項
///</summary>
///<param name="strKey"></param>
///<returns></returns>
public static string GetAppConfig(string strKey)
{
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
foreach (string key in config.AppSettings.Settings.AllKeys)
{
if (key == strKey)
{
return config.AppSettings.Settings[strKey].Value.ToString();
}
}
return null;
}
4、在*.exe.config檔案中appSettings配置節增加一對鍵值對
///<summary>
///在*.exe.config檔案中appSettings配置節增加一對鍵值對
///</summary>
///<param name="newKey"></param>
///<param name="newValue"></param>
public static void UpdateAppConfig(string newKey, string newValue)
{
string file = System.Windows.Forms.Application.ExecutablePath;
Configuration config = ConfigurationManager.OpenExeConfiguration(file);
bool exist = false;
foreach (string key in config.AppSettings.Settings.AllKeys)
{
if (key == newKey)
{
exist = true;
}
}
if (exist)
{
config.AppSettings.Settings.Remove(newKey);
}
config.AppSettings.Settings.Add(newKey, newValue);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
5、config讀取
using System.Configuration;
//省略其他程式碼
public SalesOrderData()
{
string str = "";
str = ConfigurationManager.ConnectionStrings["kyd"].ToString();
conn = new SqlConnection(str);
cmd = conn.CreateCommand();
}
6、重置修改值
7、儲存修改值
四、快速實現讀寫配置檔案
這裡以key、value進行操作為例:
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
namespace BoonyaTests
{
/// <summary>
/// 對exe.Config檔案中的appSettings段進行讀寫配置操作
/// 注意:除錯時,寫操作將寫在vhost.exe.config檔案中
/// </summary>
public class ConfigAppSettings
{
/// <summary>
/// 寫入值
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SetValue(string key, string value)
{
//增加的內容寫在appSettings段下 <add key="RegCode" value="0"/>
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (config.AppSettings.Settings[key] == null)
{
config.AppSettings.Settings.Add(key, value);
}
else
{
config.AppSettings.Settings[key].Value = value;
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");//重新載入新的配置檔案
}
/// <summary>
/// 讀取指定key的值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetValue(string key)
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (config.AppSettings.Settings[key] == null)
return "";
else
return config.AppSettings.Settings[key].Value;
}
}
}
參考文章:
https://www.cnblogs.com/qq450867541/p/7119433.html
相關文章
- 日常積累——彙編檔案編寫
- python config配置檔案的讀寫Python
- C#中讀寫INI配置檔案C#
- 日常知識積累
- 日常技術積累
- postfix配置積累(不斷的積累)
- 兩種讀寫配置檔案的方案(app.config與web.config通用)APPWeb
- 個人積累linux 日常命令Linux
- java日常知識點積累Java
- c#讀寫ini檔案C#
- C#讀寫檔案總結C#
- 使用C#讀寫ini檔案C#
- 使用C#讀寫xml檔案C#XML
- C#讀取ini配置檔案C#
- java 讀寫 ini 配置檔案Java
- C#讀取文字檔案和寫文字檔案C#
- 在.net中讀寫config檔案的各種方法
- C#關於讀寫INI檔案C#
- C# winform中讀寫ini檔案C#ORM
- C#讀取Json配置檔案C#JSON
- C#讀寫xml檔案應用案例C#XML
- C#讀取指定json配置檔案C#JSON
- linux/windows 讀寫ini配置檔案LinuxWindows
- 檔案的讀寫
- 通用的config檔案讀取類
- 使用IniEditor讀寫INI型別配置檔案型別
- C#配置檔案C#
- 檔案讀寫
- 普通檔案的讀寫
- git config配置檔案詳解Git
- WCF中的web.config配置檔案Web
- X的配置檔案XF86Config
- php生成配置檔案config.php 生成陣列配置檔案PHP陣列
- 配置檔案的編寫
- Nginx配置使用積累[不斷更新]Nginx
- C#專案例項中讀取並修改App.config檔案《轉》C#APP
- 檔案排版(文字檔案讀寫)
- Golang 讀、寫檔案Golang