ADO.NET 快速入门(十一):连接池

这个示例演示了如何构建一个到数据源的连接池。你可以通过连接池部署高性能的应用程序。本例中使用连接串创建连接池,并且由 SqlConnection 自动管理。
 
            string connString;

            connString = "server=(local);Integrated Security=SSPI;database=northwind;"
                         + "pooling=true;";
            SqlConnection myConnection = new SqlConnection(connString);
            myConnection.Open();
            myConnection.Close();

 

本例中,在构建 SqlConnection 对象时, 在连接串中指定了连接池特性,就像下例中一样。请记住:连接池是隐式的,除非明确禁用,都会自动创建。因此,“True”是 pooling 关键字的默认设置(pooling=true)。
 
String connString;

// Specification in the connection string:
// Please note: Pooling is implicit, you automatically get it unless you disable it. 
//              Therefore, "true" is the default for the pooling keyword (pooling=true).   
// Connection Reset:    False
// Connection Lifetime: 5
// Enlist:              true
// Min Pool Size:       1
// Max Pool Size:       50

connString = "server=(local)\\SQLExpress;Integrated Security=SSPI;database=northwind;" +
             "connection reset=false;" +
             "min pool size=1;" +
             "max pool size=50";

SqlConnection myConnection1 = new SqlConnection(connString);
SqlConnection myConnection2 = new SqlConnection(connString);
SqlConnection myConnection3 = new SqlConnection(connString);

 

现在用代码实现在连接池上使用多个 Connections 对象。首先,从连接池打开2个 Connections 对象并且回收它们。然后,从连接池打开3个 Connections 对象并且回收它们。
 
    public class ConnectionPoolingExample
    {
        public void Run()
        {
            string connString;
            connString = "server=(local);Integrated Security=SSPI;database=northwind;"
                         + "connection reset=false;"
                         + "min pool size=1;"
                         + "max pool size=50";


            SqlConnection myConnection1 = new SqlConnection(connString);
            SqlConnection myConnection2 = new SqlConnection(connString);
            SqlConnection myConnection3 = new SqlConnection(connString);

            // 打开2个连接。一个是从连接池打开(参考 min pool size),另一个从数据源创建。
            Console.WriteLine("打开2个连接。");
            myConnection1.Open();
            myConnection2.Open();

            // 目前,连接池里有2个和连接串匹配的连接
            Console.WriteLine("返回2个连接到连接池。");
            myConnection1.Close();
            myConnection2.Close();

            // 从连接池取出1个连接
            Console.WriteLine("从连接池打开1个连接。");
            myConnection1.Open();

            Console.WriteLine("从连接池取出第2个连接。");
            myConnection2.Open();

            Console.WriteLine("第3个连接从数据源创建。");
            myConnection3.Open();

            // 回收3个连接到连接池
            Console.WriteLine("回收3个连接到连接池。");
            myConnection1.Close();
            myConnection2.Close();
            myConnection3.Close();
        }
    }

 

连接池模型类似于不通过连接池的连接。但是,当完成一次池连接释放连接回连接池时,调用 Close 方法是非常必要的。
 
原文连接:

 

 

转载于:https://www.cnblogs.com/JavCof/p/3443016.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值