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

这是一个简单的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

祝神九成功回家





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值