`

ado.net 连接池相关知识

 
阅读更多

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Data.SqlClient;

namespace _10连接池2
{
    class Program
    {
        static void Main(string[] args)
        {
            //string constr = "Data Source=zxtiger;Initial Catalog=itcastcn;Integrated Security=True";
            //using (SqlConnection con = new SqlConnection(constr))
            //{
            //    con.Open();
            //}

            //using (SqlConnection con1 = new SqlConnection(constr))
            //{
            //    con1.Open();
            //}

            string constr = "Data Source=zxtiger;Initial Catalog=Itcastcn;Integrated Security=True;Pooling=false";
            PropertyInfo pinfo = typeof(SqlConnection).GetProperty("InnerConnection", BindingFlags.NonPublic | BindingFlags.Instance);
            SqlConnection con1 = new SqlConnection(constr);
            object obj1 = null;
            object obj2 = null;

            using (con1)
            {
                con1.Open();
                //获取con1内部的InnerConnection对象。
                obj1 = pinfo.GetValue(con1, null);

                #region MyRegion
                ////同时打开两个相同的连接。
                //SqlConnection con2 = new SqlConnection(constr);
                //using (con2)
                //{
                //    con2.Open();
                //    obj2 = pinfo.GetValue(con2, null);
                //    con2.Close();
                //}
                #endregion
                con1.Close();
            }


            // 两次打开同一个连接
            // string constr1 = "Data Source=zxtiger;Initial Catalog=Itcastcn;User ID=sa;Password=124;";
            SqlConnection con2 = new SqlConnection(constr);
            using (con2)
            {
                con2.Open();
                //获取第二个对象的InnerConnection
                obj2 = pinfo.GetValue(con2, null);
                con2.Close();
            }

            if (obj1 == obj2)
            {
                Console.WriteLine("是同一个对象");
            }
            else
            {
                Console.WriteLine("不是同一个对象!");
            }
            Console.ReadKey();


        }
    }
}

1.第一次打开连接会创建一个连接对象。
2.当这个连接关闭时(调用Close()方法时)会将当期那连接对象放入池中
3.下一个连接对象,如果连接字符串与池中现有连接对象的
连接字符串完全一致,则会使用池中的现有连接,
而不会重新创建一个。
4.只有对象调用Close(),的时候才会放入池中,如果一个连接对象
一直在使用,则下次再创建一个连接对象发现池中没有,也会
再创建一个新连接对象
5.在池中的连接对象,如果过一段时间没有被访问则自动销毁

0
0
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    ADO.NET考核知识点

    知识点:第一范式(1NF);第二范式(2NF);第三范式(3NF);存储过程(StoredProcedure);ADO.NET概述;字符串的存储(App.config,Web.config);...连接池(什么样的情况下会创建连接池);如何创建一个XML文件

    ADO.NET 2.0技术内幕(高清 中文 带书签 全)

    本书可以使您的专业知识不再停留在基础阶段,它会引领您深入研究ADO.NET 2.0的重要编程主题。本书作为全面的技术内幕参考书,提供了专家指南、实用指令及用Visual c#和Visual Basic编写的代码示例,帮助您深入掌握...

    视频教程之数据库开发及ADO.NET-video

    分组 类型转换函数 向表中插入多条数据 字符串函数 4.ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号 5.ADO.NET连接池 封装SQLHelper 省市联动 资料管理器 6.索引 内连接 子查询 7.连接查询 存储过程 事务 ...

    ADO.NET笔记(完整版,word格式)

    ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库。 本文档包括以下知识: 1.组成部分 2.最简单的Ado&Connection; 3.关于using 4.连接池 5.Command对象 6.Try catch 7.ExecuteScalar 8....

    北京中科信软 Visual Basic.NET培训

    三 ADO.NET 数据库连接与连接池控制 执行数据操作命令 DataReader DataSet ADO.NET中的数据更新 多活动结果集 批量复制 ADO.NET中的异步处理 事务处理机制 LINQ 案例分析:采用N层架构和分布式的大型图书...

    《视频》微软数据库访问系列课程1基础知识

    微软讲师王然的讲座,详细的介绍了ado.net的应用,包括再线模式,离线模式,连接池等方面所有的常用应用,看了这个系列的教程,就不用再看其它ado.net的应用教程了。讲的很实用!!!

    亮剑.NET深入体验与实战精要2

    5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

    spring.net中文手册在线版

    使用ADO.NET进行数据访问 17.1.简介 17.2.动机 17.3.Provider抽象 17.3.1.创建IDbProvider类型的实例 17.4.命名空间 17.5.数据访问的方式 17.6.AdoTemplate简介 17.6.1.执行回调 17.6.2.在.NET 2.0中执行回调 ...

    亮剑.NET深入体验与实战精要3

    5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

    ASP.NET4高级程序设计(第4版) 3/3

    7.2.3 连接池 215 7.3 Command类和DataReader类 217 7.3.1 Command基础 217 7.3.2 DataReader类 218 7.3.3 ExecuteReader()方法和DataReader 218 7.3.4 ExecuteScalar()方法 223 7.3.5 ExecuteNonQuery...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    7.2.3 连接池 7.3 Command类和DataReader类 7.3.1 Command基础 7.3.2 DataReader类 7.3.3 ExecuteReader()方法和DataReader 7.3.4 ExecuteScalar()方法 7.3.5 ExecuteNonQuery()方法 7.3.6 ...

Global site tag (gtag.js) - Google Analytics