C# 是否需要处理SqlConnection以及SqlCommand?

C# 是否需要处理SqlConnection以及SqlCommand?,c#,ado.net,sqlconnection,sqlcommand,C#,Ado.net,Sqlconnection,Sqlcommand,是否需要分别处理SqlConnection和SqlCommand 我正在对一个应用程序进行维护工作,发现以下代码: public void CallStoredProc(string storedProcName) { using (SqlCommand command = new SqlCommand(storedProcName, CreateConnection())) { command.CommandType = CommandType.StoredPr

是否需要分别处理SqlConnection和SqlCommand

我正在对一个应用程序进行维护工作,发现以下代码:

public void CallStoredProc(string storedProcName)
{
    using (SqlCommand command = new SqlCommand(storedProcName, CreateConnection()))
    {
        command.CommandType = CommandType.StoredProcedure;
        command.Connection.Open();

        // Additional code here.

        command.ExecuteNonQuery();
    }
}
这会在正常情况下以及出现错误时正确清理SqlConnection吗?或者我们必须将代码更改为:

public void CallStoredProc(string storedProcName)
{
    using (SqlConnection connection = CreateConnection())
    {
        using (SqlCommand command = new SqlCommand(storedProcName, connection))
        {
            command.CommandType = CommandType.StoredProcedure;
            command.Connection.Open();

            // Additional code here.

            command.ExecuteNonQuery();
        }
    }
}

是的,您必须单独处理连接。您也可以在:
SqlCommand.Dispose()中看到这一点。Dispose()不关闭或处理它使用的连接(顺便说一句,这将是不好的,因为您不能用同一个连接执行多个命令)。

是的,您必须单独处理连接。您也可以在:
SqlCommand.Dispose()中看到这一点。Dispose()不关闭或处理它使用的连接(顺便说一句,这将是不好的,因为您不能用同一个连接执行多个命令)。

是的,在执行代码段后,有必要处理sqlconnection和SqlCommand对象

现在,有两种方法可以实现这一点:

  • 使用负责处理对象的语句编写代码,因为sqlconnection和sqlcommand实现了负责处理对象的IDisposable接口
  • 通过在sqlconnection对象上显式调用.close()方法

  • 是的,有必要在代码执行后处理sqlconnection和sqlcommand对象

    现在,有两种方法可以实现这一点:

  • 使用负责处理对象的语句编写代码,因为sqlconnection和sqlcommand实现了负责处理对象的IDisposable接口
  • 通过在sqlconnection对象上显式调用.close()方法
  • 你会在这里得到答案你会在这里得到答案