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

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

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

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="UI.My.MySettings.JFConnectionString" connectionString="Data Source=JIA;Initial Catalog=JF;Persist Security Info=True;User ID=sa;Password=123456"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key="ConnStr" value="Data Source=(local);Initial Catalog=JF;User ID=sa;Pwd=123456" />
    <add key="DBString" value="SqlServer" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
  </appSettings>
</configuration>

    看我的配置文件,这个时候在上面发现还有一个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读取<add>元素的Value
string name = config.AppSettings.Settings["name"].Value;
//写入<add>元素的Value
config.AppSettings.Settings["name"].Value ="xiao";
//增加<add>元素
config.AppSettings.Settings.Add("url","http://www.baidu.com");
//删除<add>元素
config.AppSettings.Settings.Remove("name");
//一定要记得保存,写不带参数的config.Save()也可以
config.Save(ConfigurationSaveMode.Modified);
//刷新,否则程序读取的还是之前的值(可能已装入内存)
System.Configuration.ConfigurationManager.RefreshSection("appSettings");
}

何为ConnectionStrings?

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

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

<connectionStrings>
    <add name="Conn1" connectionString="sercer=.;database=Test1;uid=sa;pwd=sa;" providerName="System.Data.SqlClient" />
</connectionStrings>

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

<connectionStrings>
   <add name="LocalSqlServer" connectionString="Data Source=.\\SQLExpress;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>

两者的区别

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

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

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

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

【总结】

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

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


  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mandy_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值