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 方法是非常必要的。
 
原文连接:

 

 

你可能感兴趣的:(.net)