您的位置:首页 > 其它

ADO.NET----存储连接字符串

2012-06-29 14:52 447 查看
这是一个简单的ADO.NET的配置文件的操作。PS:this is a note!!

1、新建一个App.config配置文件,像下面这样:
App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings configSource="Connections.config">
</connectionStrings>
</configuration>


2、文件中的<connectionStrings />节点,有一个configSource元素,它指明应该引用的有存储连接字符串的文件名.这样子,就不必要对App.config文件加密,而对Connections.config进行加密即可。
Connections.config

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
<add name="MainConnection"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\DBTest1.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
3、在VS中将Connections.config的属性--复制到输出目录:更改为始终复制或如果较新则复制



4、附上运行的代码:
code1:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace DataAccessLayer
{
class PersistSecurityInfo
{
public void Test1()
{
ConnectionStringSettings theConnectionString = GetConnectionString();
SqlConnectionStringBuilder builder = GetSqlConnStringBuilder(theConnectionString);
SqlConnection theConnection = GetSqlConn(builder);
theConnection.Open();
if(!string.IsNullOrEmpty(theConnection.ConnectionString))
{
Console.WriteLine(theConnection.ConnectionString);
}
theConnection.Close();

}

private SqlConnection GetSqlConn(SqlConnectionStringBuilder builder)
{
SqlConnection theConnection = new SqlConnection(builder.ConnectionString);
theConnection.StateChange += new StateChangeEventHandler(theConnection_StateChange);
return theConnection;
}
void theConnection_StateChange(object sender, StateChangeEventArgs e)
{
DataAccessComponent.displayConnectionState((SqlConnection)sender);
}
private ConnectionStringSettings GetConnectionString()
{
ConnectionStringSettings theConnectionString =
ConfigurationManager.ConnectionStrings["MainConnection"];
Console.WriteLine("ProviderName:" + theConnectionString.ProviderName);
return theConnectionString;
}

private SqlConnectionStringBuilder GetSqlConnStringBuilder(ConnectionStringSettings theConnectionString)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.ConnectionString = theConnectionString.ConnectionString;
builder.MultipleActiveResultSets = true;
//PersistSecurityInfo关键字的默认设置为false,
//如果将其设置为true事yes,则允许在打开连接后通过连接获取安全敏感信息
//(包括用户ID和密码)
//所以应该将PersistSecurityInfo设置为false,以确保不受信息的来源
//不能设备部敏感的连接字符串信息
builder.PersistSecurityInfo = true;

return builder;
}
}
}


code2:
class Program
{
static void Main(string[] args)
{

//必备的代码
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Debug") || dataDir.EndsWith(@"\bin\Release"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}
new PersistSecurityInfo().Test1();
Console.ReadKey();
}
}


运行状况:



20120629
祝神九成功回家
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: