C# WINFORM 应用程序动态读写xml config文件,获取数据库连接

  在实际项目里,我们需要用一个应用程序去连接多个数据库,有的进行测试,有的是数据库基本结构相同,数据不同, 我们不可能总去程序的连接字符串里去修改,更不能让用户去修改,所以需要动态去修改连接数据库配置信息。如果安全性可考虑的话需要对字符串加密,我这里写点简单的实现,希望大家有好的方法或意见,请执教和批评。

1 在应用程序里添加app.config

 

None.gif <? xml version="1.0" encoding="utf-8"  ?>
None.gif
< configuration >
None.gif
< appSettings >
None.gif
<!--    User application and configured property settings go here. -->
None.gif        
<!--    Example: <add key="settingName" value="settingValue"/>  -->
None.gif        
< add  key ="ServerIP"  value ="127.0.0.1" />
None.gif        
< add  key ="Server"  value ="Automation_temp" ></ add >
None.gif        
< add  key ="user"  value ="sa" ></ add >
None.gif        
< add  key ="password"  value ="shan" ></ add >
None.gif
</ appSettings >
None.gif
</ configuration >
None.gif

 

程序读取数据库连接,如下:

如果想把连接的信息显示出来,可以去解析字符串strcon,获取相关信息

None.gif private   void  Open() 
ExpandedBlockStart.gifContractedBlock.gif        
... {
InBlock.gif            
// open connection
InBlock.gif
            if (con == null
ExpandedSubBlockStart.gifContractedSubBlock.gif            
...{
InBlock.gif                
InBlock.gif                
string strcon=String.Format ("packet size=4096;data source={0};persist security info=True;initial catalog={1};user id={2};password={3}",ConfigurationSettings.AppSettings["SQLserverIP"],
InBlock.gif                    ConfigurationSettings.AppSettings[
"Server"],ConfigurationSettings.AppSettings["user"],ConfigurationSettings.AppSettings["password"]);
InBlock.gif                con 
= new SqlConnection(strcon);
InBlock.gif                
try
ExpandedSubBlockStart.gifContractedSubBlock.gif                
...{
InBlock.gif                    con.Open();
ExpandedSubBlockEnd.gif                }

InBlock.gif                
catch(Exception ee)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
...{
InBlock.gif                    ee.ToString();
ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }
                
ExpandedBlockEnd.gif        }

 

2 新建窗体ConfigFrm

添加4个label  ,分别是:

服务器ip,Database Name,SA,password,

4个TextBox,分别是:

txtIP

txtDataBaseName

txtName

txtPwd

1个确认按钮btnOK,

3  写个方法保存修改的设置:

 

None.gif      private   void  SaveConfig( string  ConnenctionString, string  strKey)
ExpandedBlockStart.gifContractedBlock.gif        
... {
InBlock.gif            XmlDocument doc
=new XmlDocument();
InBlock.gif            
//获得配置文件的全路径
InBlock.gif
            string strFileName=AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
InBlock.gif            doc.Load(strFileName);
InBlock.gif            
//找出名称为“add”的所有元素
InBlock.gif
            XmlNodeList nodes=doc.GetElementsByTagName("add");
InBlock.gif            
for(int i=0;i<nodes.Count;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
...{
InBlock.gif                
//获得将当前元素的key属性
InBlock.gif
                XmlAttribute att=nodes[i].Attributes["key"];
InBlock.gif                
//根据元素的第一个属性来判断当前的元素是不是目标元素
InBlock.gif
                if (att.Value==strKey) 
ExpandedSubBlockStart.gifContractedSubBlock.gif                
...{
InBlock.gif                    
//对目标元素中的第二个属性赋值
InBlock.gif
                    att=nodes[i].Attributes["value"];
InBlock.gif                    att.Value
=ConnenctionString;
InBlock.gif                    
break;
ExpandedSubBlockEnd.gif                }

InBlock.gif                
InBlock.gif                
ExpandedSubBlockEnd.gif            }

InBlock.gif            
//保存上面的修改
InBlock.gif
            doc.Save(strFileName);
ExpandedBlockEnd.gif        }

 

4 在确认按钮btnOK click事件:

 

None.gif private   void  btnOK_Click( object  sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
... {
InBlock.gif            
if (txtIP.Text=="")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
...{
InBlock.gif                MessageBox.Show(
"ServerIP is not allow null");
InBlock.gif                
return ;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else if(txtDataBaseName.Text=="")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
...{
InBlock.gif                MessageBox.Show(
"DataBase is not allow null");
InBlock.gif                
return ;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else if(txtName.Text=="")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
...{
InBlock.gif                MessageBox.Show(
"User Name is not allow null");
InBlock.gif                
return ;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
...{
InBlock.gif                SaveConfig(txtIP.Text,
"ServerIP");
InBlock.gif                SaveConfig(txtDataBaseName.Text,
"Server");
InBlock.gif                SaveConfig(txtName.Text,
"user");
InBlock.gif                SaveConfig(txtPassword.Text,
"password");
InBlock.gif                MessageBox.Show(
"Config Sucessful!","",MessageBoxButtons.OK,MessageBoxIcon.Warning);
ExpandedSubBlockEnd.gif            }

InBlock.gif            
this.Close();
InBlock.gif            
ExpandedBlockEnd.gif        }

在应用程序当前目录下,程序动态加载的是 /bin/debug/test.exe.config信息,从而实现了动态读写xml文件,去获取

数据库连接。

转载于:https://www.cnblogs.com/muliangcong/archive/2008/12/10/1351668.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值