• 配置独立的数据库连接配置文件


    我们需要把数据库连接独立的配置出来,以便我们使用

    1、新建一个类文件,名称随意,不过最好是以Handler结尾的,因为要继承IConfigurationSectionHandler

     1 public class ConnHandler : IConfigurationSectionHandler
     2     {
     3 
     4         const string StrFormat = "server={0};database={1};uid={2};pwd={3}";
     5 
     6 
     7         #region IConfigurationSectionHandler 成员
     8 
     9         public object Create(object parent, object configContext, XmlNode node)
    10         {
    11             Hashtable tb = new Hashtable();
    12 
    13             foreach (XmlNode xn in node.ChildNodes)
    14             {
    15                 if (xn.NodeType == XmlNodeType.Element)
    16                 {
                  //JhEncrypt.Decrypt是自定义的解密算法,至于你要怎么加密那是你的事
    17 string servre = JhEncrypt.Decrypt(xn.SelectNodes("server")[0].InnerText); 18 string database = JhEncrypt.Decrypt(xn.SelectNodes("database")[0].InnerText); 19 string user = JhEncrypt.Decrypt(xn.SelectNodes("user")[0].InnerText); 20 string password = JhEncrypt.Decrypt(xn.SelectNodes("password")[0].InnerText); 21 tb.Add(xn.Name, string.Format(StrFormat, servre, database, user, password)); 22 } 23 } 24 return tb; 25 26 } 27 28 #endregion 29 }

    2、大家已经看到了,这需要定义一个xml文件了,然后xml文件需要有server, database, user, password节点,我们暂时把xml文件命名为“ConnDB.Config”

    1 <ConnDB>
    2   <DB>
    3     <server>要加密的数据库实例</server>
    4     <database>要加密的数据库</database>
    5     <user>要加密的用户名</user>
    6     <password>要加密的密码</password>
    7   </DB>
    8 </ConnDB>

    3、该去Web.Config添加自定义的Section了

    1 <configSections>
    2     <section name="ConnDB" type="custom.ConnHandler"/>
    3 </configSections>
    4 <ConnDB configSource="ConnDB.config"/>

    新建的section的Name一定要和下面声明的名字对应,type是命名空间.文件夹名称(可忽略).类名

    下面声明的section配置节的configSource是新建的xml文件的名称

    4、使用

    页面加载的时候会读取web.config中自定义section配置节的内容,然后执行自定义Handler的Create方法从xml获取连接字符串内容存入HashTable中

    调用的时候我们只要使用下面这句就可以从section中获取数据库连接字符串

    Hashtable.Synchronized((Hashtable)ConfigurationManager.GetSection("ConnDB"));

    Hashtable.Synchronized是为了线程安全考虑,

    当然你也可以直接使用ConfigurationManager.GetSection("ConnDB")获取一个object对象转化为string

    前提是你的xml中只有一个父节点下的子节点

  • 相关阅读:
    Exp8 Web综合
    Exp7 网络欺诈防范
    更新Linux下openssl路径和库路径
    CVE-2019-5786漏洞利用复现
    Exp6 MSF应用基础
    CVE-2020-11651漏洞利用复现
    Exp5 信息搜集与漏洞扫描
    Exp4 恶意代码分析
    快速搭建SpringBoot项目
    Java split() 方法注意事项
  • 原文地址:https://www.cnblogs.com/wangyulong/p/6604447.html
Copyright © 2020-2023  润新知