讀取並修改App.config檔案例項

iDotNetSpace發表於2009-10-23

1. 向專案新增app.config檔案:

    右擊專案名稱,選擇“新增”→“新增新建項”,在出現的“新增新項”對話方塊中,選擇“新增應用程式配置檔案”;如果專案以前沒有配置檔案,則預設的檔名稱為“app.config”,單擊“確定”。出現在設計器檢視中的app.config檔案為:

   
   
   

    在專案進行編譯後,在bin\Debuge檔案下,將出現兩個配置檔案(以本專案為例),一個名為“JxcManagement.EXE.config”,另一個名為“JxcManagement.vshost.exe.config”。第一個檔案為專案實際使用的配置檔案,在程式執行中所做的更改都將被儲存於此;第二個檔案為原始碼“app.config”的同步檔案,在程式執行中不會發生更改。

    2.  connectionStrings配置節:

    請注意:如果您的SQL版本為2005 Express版,則預設安裝時SQL伺服器例項名為localhost\SQLExpress,須更改以下例項中“Data Source=localhost;”一句為“Data Source=localhost\SQLExpress;”,在等於號的兩邊不要加上空格。

    <!--資料庫連線串--&gt
   
   
        connectionString="Data Source=localhost;Initial Catalog=jxcbook;User ID=sa;password=********"
    providerName="System.Data.SqlClient" />
   

    3. appSettings配置節:

    appSettings配置節為整個程式的配置,如果是對當前使用者的配置,請使用userSettings配置節,其格式與以下配置書寫要求一樣。

    <!--進銷存管理系統初始化需要的引數--&gt
   
   
   
   
   
   
   
   
   

    4.讀取與更新app.config

    對於app.config檔案的讀寫,參照了網路文章:http://www.codeproject.com/csharp/ SystemConfiguration.asp標題為“Read/Write App.Config File with .NET 2.0”一文。

    請注意:要使用以下的程式碼訪問app.config檔案,除新增引用System.Configuration外,還必須在專案新增對System.Configuration.dll的引用。

    4.1 讀取connectionStrings配置節

    ///


    ///依據連線串名字connectionName返回資料連線字串
    ///

    ///
    ///
    private static string GetConnectionStringsConfig(string connectionName)
    {
    string connectionString =
    ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();
    Console.WriteLine(connectionString);
    return connectionString;
    }

 4.2 更新connectionStrings配置節

    ///


    ///更新連線字串
    ///

    ///連線字串名稱
    ///連線字串內容
    ///資料提供程式名稱
    private static void UpdateConnectionStringsConfig(string newName,
    string newConString,
    string newProviderName)
    {
    bool isModified = false;    //記錄該連線串是否已經存在
    //如果要更改的連線串已經存在
    if (ConfigurationManager.ConnectionStrings[newName] != null)
    {
    isModified = true;
    }
    //新建一個連線字串例項
    ConnectionStringSettings mySettings =
    new ConnectionStringSettings(newName, newConString, newProviderName);
    // 開啟可執行的配置檔案*.exe.config
    Configuration config =
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    // 如果連線串已存在,首先刪除它
    if (isModified)
    {
    config.ConnectionStrings.ConnectionStrings.Remove(newName);
    }
    // 將新的連線串新增到配置檔案中.
    config.ConnectionStrings.ConnectionStrings.Add(mySettings);
    // 儲存對配置檔案所作的更改
    config.Save(ConfigurationSaveMode.Modified);
    // 強制重新載入配置檔案的ConnectionStrings配置節
    ConfigurationManager.RefreshSection("ConnectionStrings");
    }

    4.3 讀取appStrings配置節

    ///


    ///返回*.exe.config檔案中appSettings配置節的value項
    ///

    ///
    ///
    private static string GetAppConfig(string strKey)
    {
    foreach (string key in ConfigurationManager.AppSettings)
    {
    if (key == strKey)
    {
    return ConfigurationManager.AppSettings[strKey];
    }
    }
    return null;
    }

    4.4 更新connectionStrings配置節

    ///


    ///在*.exe.config檔案中appSettings配置節增加一對鍵、值對
    ///

    ///
    ///
    private static void UpdateAppConfig(string newKey, string newValue)
    {
    bool isModified = false;
    foreach (string key in ConfigurationManager.AppSettings)
    {
    if(key==newKey)
    {
    isModified = true;
    }
    }
    // Open App.Config of executable
    Configuration config =
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    // You need to remove the old settings object before you can replace it
    if (isModified)
    {
    config.AppSettings.Settings.Remove(newKey);
    }
    // Add an Application Setting.
    config.AppSettings.Settings.Add(newKey,newValue);
    // Save the changes in App.config file.
    config.Save(ConfigurationSaveMode.Modified);
    // Force a reload of a changed section.
    ConfigurationManager.RefreshSection("appSettings");
    }
    ///
    /// 寫入Key,Value 到XML檔案
    ///

    ///
    ///
    public static  void SaveConfig(string Key,string Value)
    {
    XmlDocument doc = new XmlDocument();
    //獲得配置檔案的全路徑
    string strFileName = AppDomain.CurrentDomain.BaseDirectory.ToString() + "App.config";
    doc.Load(strFileName);
    //找出名稱為“add”的所有元素
    XmlNodeList nodes = doc.GetElementsByTagName("add");
    for (int i = 0; i < nodes.Count; i++)
    {
    //獲得將當前元素的key屬性
    XmlAttribute att = nodes[i].Attributes["key"];
    //根據元素的第一個屬性來判斷當前的元素是不是目標元素
    if (att.Value == Key)
    {
    //對目標元素中的第二個屬性賦值
    att = nodes[i].Attributes["value"];
    att.Value = Value;
    break;
    }
    }
    //儲存上面的修改
    doc.Save(strFileName);
    }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-617321/,如需轉載,請註明出處,否則將追究法律責任。

相關文章