【C/S】——浅谈AppSettings和ConnectionStrings的区别

    在设计模式抽象工厂那一节中就接触过配置文件,当时的感觉晕乎乎的,一直感觉好高大上的样子。后来到机房收费系统,七层的架构再次用到,可是自己过的太迷糊了,却从未想到去了解一个这个高大上的东西,直到机房系统验收,师傅说解释一下反射+抽象+配置文件,真的自己就处于一个蒙圈的状态。

    其实整个机房收费系统用到配置文件的地方只有数据库的连接,我只记得自己在配置文件写过一个appSettings配置节点,在机房的SQLHelp中也就使用的它。



  
    
  
  
    
  
  
    
    
    
  

    看我的配置文件,这个时候在上面发现还有一个ConnectionStrings,话说这个东西是干什么的?师傅让我把SQLHelp中AppSettings换成ConnectionStrings,然后在运行,同样程序运行成功了,那么问题来了这是两个东西是什么?有什么区别?

'设置全局数据库连接字符串
    Private Shared ReadOnly StrConnection As String = ConfigurationManager.ConnectionStrings("connectionString").ToString()
    Private Shared ReadOnly StrConnection As String = ConfigurationManager.AppSettings("ConnStr")

AppSettings

    大家一般都使用AppSettings,可是这是什么意思?AppSettings这是一个配置节点,用它的作用就是可以在config中将我们需要添加的配置文件封装成一个个的节点,需要的时候根据节点找到需要的在修改就OK了!

如何读写AppSettings?

    1、添加System.Configuration.dll引用

    2、引用using System.Configuration名称空间

    3、读取config文件的appSettings节的方法比较简单,可以通过上文中System.Configuration.ConfigurationManager.AppSettings["Key"]的方法进行访问,但该方法不提供写入。

    如果希望写入配置文件,可以使用ConfigurationManager对象执行打开配置文件的操作后,将会返回一个Configuration的对象,利用该对象进行操作(增删改查都可以)。(下面是一些小例子)

private  void AccessAppSettings()
{
//获取Configuration对象
Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//根据Key读取元素的Value
string name = config.AppSettings.Settings["name"].Value;
//写入元素的Value
config.AppSettings.Settings["name"].Value ="xiao";
//增加元素
config.AppSettings.Settings.Add("url","http://www.baidu.com");
//删除元素
config.AppSettings.Settings.Remove("name");
//一定要记得保存,写不带参数的config.Save()也可以
config.Save(ConfigurationSaveMode.Modified);
//刷新,否则程序读取的还是之前的值(可能已装入内存)
System.Configuration.ConfigurationManager.RefreshSection("appSettings");
}

何为ConnectionStrings?

    其实这就是在数据库连接字符串,具体的它有两种连接方式。

    1、第一个就是简单的用户名+密码


    

    2、另一种是使用windows验证,它已经集成了windows的安全验证方式


   

两者的区别

    1、两种方法只是具体用法格式上的不同,前者连接字符串的属性名为key,后者为name,但都能实现了字符串的获取。

    2、检索值不同,前者使用System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]检索值;后者使用System.Configuration.ConfigurationManager.ConnectionString["ConnectionString"].ConnectionString;来检索值,且需要转换成字符串。

    3、使用ConnectionString,还可以对节点进行加密解密,用来确定其安全性。

    4、一般的要把数据库连接字符串放在ConnectionStrings中,若是放在appSettings中,则会报错。还有一点就是使用ConnectionString比较容易更改数据库,只需要更改provideName。

【总结】

      经过这样一遍学习,在配置文件写数据库连接语句还是使用ConnectionString比较好。其实这两个小东西其实只是配置文件的一小部分,还有更多的内容等着我们去学习。自我反思其实这些问题要是遇到的时候就查一下,就没有验收时的尴尬了。这些问题还是出在自己有些急功近利,只想尽快完成机房,却忽略了这些很值得学习的地方。

    菜鸟一只,如有理解偏颇之处,还请各位大神斧正,不胜感激!


你可能感兴趣的:(【C/S】——浅谈AppSettings和ConnectionStrings的区别)