是否需要配置SqlConnection以及SqlCommand?

是否有必要分开处理一个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()不关闭或处置它使用的连接(顺便说一句,如果你不能用同一个连接执行多个命令,那将会很糟糕)。


是的,在执行一段代码后,需要处理sqlconnection和sqlcommand对象。

现在,有两种方法可以实现这一点。 1.使用语句编写代码,该语句将负责处理对象,因为sqlconnection和sqlcommand实现了负责处理对象的IDisposable接口。2.通过在sqlconnection对象上显式调用.close()方法。

链接地址: http://www.djcxy.com/p/20371.html

上一篇: Is it necessary to dispose SqlConnection as well as SqlCommand?

下一篇: Connection pool corrupted by nested ADO.NET transactions (with MSDTC)