连接池 [英] Connection Pooling

查看:134
本文介绍了连接池的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的code,如果我用康恩== NULL在最后我还是使用连接池? 我知道这是一个很好的做法,关闭连接,但如何处理整个连接对象?

 公共无效的ExecuteNonQuery(的SqlCommand CMD)
    {
        // ========== ==========连接//
        SqlConnection的康恩=新的SqlConnection(strConStr);

        尝试
        {
            // ==========打开连接========== //
            Conn.Open();

            // ==========执行命令========== //
            Cmd.Connection =康恩;
            Cmd.CommandTimeout = 180;
            Cmd.ExecuteNonQuery();
        }
        赶上(例外EXC)
        {
            扔EXC;
        }
        最后
        {
            // ========关闭连接======== //
            如果(Conn.State == ConnectionState.Open)
            {Conn.Close(); }

            // ========处置对象======== //
            康恩= NULL;
        }
    }
 

解决方案

首先,考虑使用使用,第二,让框架处理处置。该托管提供商会做基于筹集的统筹上的连接字符串

 公共无效的ExecuteNonQuery(的SqlCommand CMD)
{
    // ========== ==========连接//
    使用(SqlConnection的康恩=新的SqlConnection(strConStr))
    {
        // ==========打开连接========== //
        Conn.Open();

        // ==========执行命令========== //
        Cmd.Connection =康恩;
        Cmd.CommandTimeout = 180;
        Cmd.ExecuteNonQuery();
    }
}
 

I have the following code, If I use conn == null in finally do I still use connection pooling? I know it is a good practice to close your connection but how about disposing the whole connection object?

    public void ExecuteNonQuery(SqlCommand Cmd)
    {
        //========== Connection ==========//
        SqlConnection Conn = new SqlConnection(strConStr);

        try
        {
            //========== Open Connection ==========//
            Conn.Open();

            //========== Execute Command ==========//
            Cmd.Connection = Conn;
            Cmd.CommandTimeout = 180;
            Cmd.ExecuteNonQuery();
        }
        catch (Exception Exc)
        {
            throw Exc;
        }
        finally
        {
            //======== Closing Connection ========//
            if (Conn.State == ConnectionState.Open)
            { Conn.Close(); }

            //======== Disposing object ========//
            Conn = null;
        }
    }

解决方案

First, consider using using, second, let the framework handle disposal. The managed providers will do pooling based on the connection string.

public void ExecuteNonQuery(SqlCommand Cmd) 
{ 
    //========== Connection ==========// 
    using(SqlConnection Conn = new SqlConnection(strConStr))
    { 
        //========== Open Connection ==========// 
        Conn.Open(); 

        //========== Execute Command ==========// 
        Cmd.Connection = Conn; 
        Cmd.CommandTimeout = 180; 
        Cmd.ExecuteNonQuery(); 
    } 
} 

这篇关于连接池的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆