c# - 连接池

标签 c# .net ado.net connection-pooling

我有以下代码,如果我在 finally 中使用 conn == null,我是否仍然使用连接池? 我知道关闭连接是一个好习惯,但是如何处理整个连接对象呢?

    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;
        }
    }

最佳答案

首先,考虑使用using,其次,让框架处理处置。 managed providers将根据连接字符串进行池化。

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(); 
    } 
} 

关于c# - 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715714/

相关文章:

c# - 我们如何在单个 onclick 命令上触发两个操作

c# - 为什么复制流然后使用 BinaryFormatter 反序列化比仅仅反序列化更快

c# - Fluent Validation 重载 (Less)GreaterThanOrEqualTo 方法不会呈现相同的结果

c# - GC.AddMemoryPressure() 不足以按时触发 Finalizer 队列执行

xml - 将数据表导出到 xml

c# - WriteableBitmapEx 的性能

c# - ArgumentException 的正确用法?

c# - 如何在.Net中不使用滚动条来移动 GridView 的行

c# - 从 ADO.NET 调用 Oracle 时批处理多个 select 语句

c# - 如何将存储过程结果映射到自定义类?