Rumah > pangkalan data > tutorial mysql > 用反射+配置文件实现数据库的访问

用反射+配置文件实现数据库的访问

WBOY
Lepaskan: 2016-06-07 15:30:05
asal
1337 orang telah melayarinya

刚开始对配置文件的认识比较模式,按照书上讲的,往程序中添加一个App.config文件,然后添加System.configuration引用就可以了。但是真正去做的时候也遇到不少问题,小小的总结一下。 首先,为什么要使用配置文件呢? 我们在连接数据库的时候,需要有一个对

        刚开始对配置文件的认识比较模式,按照书上讲的,往程序中添加一个App.config文件,然后添加System.configuration引用就可以了。但是真正去做的时候也遇到不少问题,小小的总结一下。

       首先,为什么要使用配置文件呢?

       我们在连接数据库的时候,需要有一个对象来保存连接字符串,通常情况下这个字符串是写在程序代码中的,这样如果我们更换数据库访问时,我们还是要重新修改程序,这样是很不灵活的;其次,出于安全考虑,我们都知道SQL注入,攻击者通过输入特定字符修改SQL语句,从而获得一些比较私密的信息,危害数据库,看过曾经的一则新闻,12306网站存在SQL注入等多个漏洞,试想如果一旦被一些有心人士利用了,后果是不堪设想的。基于以上原因,我们引入了配置文件。

        其次,介绍一下配置文件的使用。

        我在重构机房收费系统时在两处使用了配置文件。

        第一处:保存连接数据的字符串。

        没有使用配置文件,是这样定义连接字符串的:

       

<span>Dim strCon As String = "Data Source=localhost;Initial Catalog=User;User ID=sa;Password=123456;"</span>
Salin selepas log masuk

        现在我们要使用配置文件来保存连接字符串:

        ①在UI层中的添加一个“应用程序配置文件”,即App.configuration文件,一般是默认就用的不同添加。注意的是一定要添加在UI层,因为程序是从UI层开始读取的。配置文件的内容如下:

       

<span><configuration>
    <appsettings>        
       <add key="Constr" value="Data Source=localhost;Initial Catalog=User;User ID=sa;Password=123456"></add>
    </appsettings>
</configuration></span>
Salin selepas log masuk

        然后在D层读取配置文件:

       

<span>Dim strCon As String = System.Configuration.ConfigurationSettings.AppSettings("Constr")</span>
Salin selepas log masuk

        这样,如果我们需要更换数据库,直接更改连接配置文件中的字符串就可以了,不需要更改程序代码。

        第二处:在DBFactory工厂类中,实例化D层的Sqlserver类时。在App.config文件中再加上名为“DB”的key,并赋值,如下:

    

<span><configuration>
    <appsettings>
        <add key="DB" value="Sqlserver"></add>         
       <add key="Constr" value="Data Source=localhost;Initial Catalog=User;User ID=sa;Password=123456"></add>
    </appsettings>
</configuration></span>
Salin selepas log masuk

        然后,在DBFactroy工厂类中,读取配置文件。

       

<span>    Dim strDB As String = ConfigurationSettings.AppSettings("DB")

    Public Shared Function CreateUserDAO() As IDAL.IUserInfo
        Dim ClassName As String
        ClassName = AssemblyName + "." + DB
        Return CType(Assembly.Load(AssemblyName).CreateInstance(ClassName), IDAL.IUserInfo)
    End Function</span>
Salin selepas log masuk




sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan