您的位置:首页 > 数据库

使用配置文件保存数据库连接字符串

2013-06-08 19:34 441 查看
去年学了五个关于数据库连接的例子,然后开始做系统。那个时候真的不懂什么叫数据库连接……直到今天好像真的明白究竟如何连了,恍然间意识到,本该大一学会的东西在大二学会,本该大二弄明白的事情大三才懂得。

一直一直都在写数据库连接语句,事实上也连接成功了很多年(很多次的意思),直到开始考虑设计一个完善的数据访问策略,考虑到安全性如身份验证、授权,考虑到连接对性能和可伸缩性的影响等,才开始探索连接涉及到的种种。

连接的作用是建立一个与后台数据库通信的通道,创建连接对象必须以特定的.net数据提供者为基础。ADO.net包含了很多代表数据访问模型中各种逻辑实体的对象,其中连接和事务两个对象最重要。实际上,围绕连接和事务的不确定因素很多,而且他们对应用整体的稳定性和效率有很大影响。

说说连接字符串保存的问题。直接写在代码中的连接字符串具有最好的性能,但是这样很不灵活,一旦需要改变比如换数据库则必须重新打开修改程序。所以我们最好将连接字符串提取出来,这样的话就要考虑访问外部字符串的开销,其实呢这些开销是很小的,那么最重要的就是安全问题。我们都知道SQL注入,攻击者通过输入特定字符修改SQL语句,从而危害数据库,我们常常采用参数化查询的方式避免SQL注入。为防止攻击者修改、盗取连接字符串,我们可以将连接字符串保存为配置文件,UDL文件,windows注册表。

现阶段我们主要使用配置文件的形式。
没有使用配置文件时这样定义:

Dim connStr As String = "Data Source=localhost;Initial Catalog=NewCharge;Persist Security Info=True;User ID=sa;Password=123456"


现在可以在项目中添加一个“应用程序配置文件”,命名为“app.config”。开始我没找到在哪里添加,后来才知道必须在UI层创建,因为软件是在UI层读取的,创建在其他层软件是找不到这个配置文件的!
配置文件内容如下:

<configuration>
	<appSettings >
		<add key ="connStr" value ="Data Source=localhost;Initial Catalog=NewCharge;Persist Security Info=True;User ID=sa;Password=123456"/>
	</appSettings>
	<system.diagnostics >
		<sources>
			<!-- 本节定义My.Application.Log的登录配置-->
		</sources>
	</system.diagnostics>
</configuration>



在DAL层中,读取配置文件的代码就改成了

Dim connstr As String = System.Configuration.ConfigurationManager.AppSettings("connStr")
        conn = New SqlClient.SqlConnection(connstr)


以后再需要进行数据库访问链接字符串的修改,直接记事本打开config修改就哦了。这也很好的体现了开闭原则,对修改关闭。.NET框架配置文件以纯文本的形式部署,访问方便。但以明文密码形式保存还是很不安全的。windows注册表是最安全的存储场所,它是保存关键信息的系统知识库,通过加密可以达到较高的安全性,不过在部署上会有些麻烦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: