设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
同学网,基于同学关系的真实社区
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
最新文章
 C#摄像头编程实例
 C#下用P2P技术实现点…
 Asp.net(c#)数…
 SQL Server数据…
 .NET牛人应该知道些什…
 NET牛人应该知道些什么
 SQL Server S…
 备份指定表到另一数据库
 SQLSERVER中快速…
 ASP.NET中url传…
 ASP.NET自动给UR…
 ASP.NET 2.0防…
 ASP.NET 2.0 …
 如何解决ASP.net中…
 sql server 与…
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
<%-- 最新动态 Begin --%> <%-- 最新动态 End --%>
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#学习第一天
 雅虎公司C#笔试题,看看…
 C#语言初级入门(1)
 C#中利用正则表达式实现…
 远程重启计算机(C#)
 用.net操作word
 什么是B/S三层?
 VB和C# 语法对比图 …
 Visual C#常用函…
 Visual C#的SQ…
数据库连接字符串的处理方法!加密解密连接字符串
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

数据库连接字符串的处理应该是一个项目里最基础的东东了.(除非你的项目不涉及到数据库.)
千万不要小看他,处理不好也时会给你带来不少的麻烦的.
连接字符串的内容在这里就不讨论了,这里主要说一下他的存放位置和读取方法.
我们要达到的目的:无论连接字符串如何变化,都不需要修改项目!
1.把连接字符串写在程序里面.
一般的初级教程里会告诉你这么写
VB.net
Dim cn As New SqlClient.SqlConnection( "user id=sa;
password=sa;
server=.;
initial catalog=数据库名称" )C#
SqlClient.SqlConnection cn = new  SqlClient.SqlConnection( "user id=sa;
password=sa;
server=.;
initial catalog=数据库名称" )这么写当然是没有错误,但是当你写了n个页面后,有一半的页面有这样的代码,这时候如果需要改变连接字符串(比如换用户名和密码)的话,那可就有得你改的了.想当初我就犯过这样的错误,555555
2.放在web.config里面
这是比较流行的方法了.修改web.config文件,加入以下代码
"user id=sa;
password=sa;
server=.;
initial catalog=数据库名称" key="connString" />
然后在需要的地方调用就可以了.
VB.net
Dim cnString As String = System.Configuration.ConfigurationSettings.AppSettings.Item( "connString" )C#
string cnString = System.Configuration.ConfigurationSettings.AppSettings["connString"]这样呢就不怕连接字符串再发生变化了.如果有变化的话,修改web.config就行了.
缺点就是web.congfig 是文本形式的,虽然不能下载,但还是缺乏安全感.
3.放在注册表里面
事先把连接字符串放在注册表里面,用的时候到注册表里面取值.
优点:安全性高.要想看到注册表里的信息不是很容易的事情吧.
缺点:读取注册表需要一定的权限,但是一般的空间是不会开放这个权限的,因为开放了就意味着可以操作注册表,这对服务器就太不安全了.
4.放在DLL文件里面
写一个单独的类,再写一个函数,调用这个函数返回连接字符串.然后把它编译成DLL文件备用

using System;
namespace JYK
{
    /**//// <summary>    /// 取得连接字符串.    /// </summary>    public class Connection   
    {
        public static string ConnectionString( )       
        {
            return "user id=sa;
            password=sa;
            server=.;
            initial catalog=数据库名称";
        }
    }
}
直接打开 DLL文件 看到的是乱码,要比写在web.config有安全感.当然了通过反编译软件还是可以看到里面的代码.
还有就是修改起来不太方便,需要重新编译一下这个类.
5.综合
以上个四种方法各有优越缺点,用哪一个都不是最好的,另外还有一个问题没有提及 —— 加密连接字符串.
那么在一个项目里,怎么做才是最好的方法呢? —— 分层.
项目 <——类(DLL文件) <——存放连接字符串的位置A.对于项目来说呢只需要知道:当我要用连接字符串的时候我到DLL里面(调用函数)读取就行了,至于连接字符串具体的存放位置、是否加密等都不必关心.
B.类(DLL文件),这个就很重要和灵活了.对于一般的项目可以这么写
using System;
namespace JYK
{
    /**//// <summary>    /// 取得连接字符串.    /// </summary>    public  class Connection   
    {
        public static string ConnectionString( )       
        {
            return System.Configuration.ConfigurationSettings.AppSettings["ConnString"];
        }
    }
}
注意:上一个DLL是把连接字符串直接写在了类里面,而这回是到web.config里面读? ?
也许你会问:既然是到web.config里面读取连接字符串,那为什么还要加上一个DLL呢,是不是多此一举呀?
这么做是为了达到这个目的:无论连接字符串如何变化,都不需要修改项目!
如果是直接读取web.config,那么如果web.config里面放的是加密的连接字符串,那怎么处理?是不是要修改项目,或者是数据层.不要认为修改数据层就不是修改项目了.
如果加上了一个DLL的话,那么只需要重新编译一下这个DLL就行了.项目可以保持不变.
C.连接字符串的存放位置
这个可以根据项目的要求来做,放在哪里都可以,只需要修改一下DLL文件就行了.


本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright ? 2006-2008
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号