您的位置:首页 > 移动开发

读取并修改App.config文件(转载)

2009-11-10 15:23 495 查看
读取并修改App.config文件(转载)

1. 
向项目添加
app.config
文件:

右击项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”;如果项目以前没有配置文件,则默认的文件名称为“
app.config
”,单击“确定”。出现在设计器视图中的
app.config
文件为:

<?
xml
version
=
"1.0
"encoding
=
"utf-8
" ?>

<
configuration
>

</
configuration
>

在项目进行编译后,在
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;
”,在等于号的两边不要加上空格。

<!--
数据库连接串
-->

     <
connectionStrings
>

         <
clear
/>

         <
add
name
=
"conJxcBook
"

             
connectionString
=
"Data Source=localhost;Initial Catalog=jxcbook;User                                   ID=sa;password=********
"

             
providerName
=
"System.Data.SqlClient
" />

     </
connectionStrings
>

3. appSettings
配置节:

appSettings
配置节为整个程序的配置,如果是对当前用户的配置,请使用
userSettings
配置节,其格式与以下配置书写要求一样。

<!--
进销存管理系统初始化需要的参数
-->

     <
appSettings
>

         <
clear
/>

         <
add
key
=
"userName
"value
=
"" />

         <
add
key
=
"password
"value
=
"" />

         <
add
key
=
"Department
"value
=
"" />

         <
add
key
=
"returnValue
"value
=
"" />

         <
add
key
=
"pwdPattern
"value
=
"" />

         <
add
key
=
"userPattern
"value
=
"" />

</
appSettings
>

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配置节

///
<summary>

///
依据连接串名字connectionName返回数据连接字符串

///
</summary>

///
<param name="connectionName"></param>

///
<returns></returns>

private
static
string
GetConnectionStringsConfig(string
connectionName)

{

string
connectionString =

        ConfigurationManager
.ConnectionStrings[connectionName].ConnectionString.ToString();

    Console
.WriteLine(connectionString);

    return
connectionString;

}

4.2 更新connectionStrings配置节

///
<summary>

///
更新连接字符串

///
</summary>

///
<param name="newName">
连接字符串名称
</param>

///
<param name="newConString">
连接字符串内容
</param>

///
<param name="newProviderName">
数据提供程序名称
</param>

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配置节

///
<summary>

///
返回*.exe.config文件中appSettings配置节的value项

///
</summary>

///
<param name="strKey"></param>

///
<returns></returns>

private
static
string
GetAppConfig(string
strKey)

{

    foreach
(string
key in
ConfigurationManager
.AppSettings)

    {

        if
(key == strKey)

        {

            return
ConfigurationManager
.AppSettings[strKey];

        }

    }

    return
null
;

}

4.4 更新connectionStrings配置节

///
<summary>

///
在*.exe.config文件中appSettings配置节增加一对键、值对

///
</summary>

///
<param name="newKey"></param>

///
<param name="newValue"></param>

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"
);

}

 

 
///
 
<summary>

        
///
 写入Key,Value 到XML文件

        
///
 
</summary>

        
///
 
<param name="Key"></param>

        
///
 
<param name="Value"></param>

        
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);

           

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息