C# 通过使用释放连接和命令

C# 通过使用释放连接和命令,c#,sql-server,ado.net,C#,Sql Server,Ado.net,当SqlConnection和SqlCommand都在单个using块中创建时,它们在退出时都被释放,或者是否需要嵌套using块 using (SqlCommand command = new SqlConnection(ConnectionString).CreateCommand()) { // Use command.. } using块只调用。在块完成执行后,对您声明的资源进行Dispose 因此,是的,您应该将SqlConnection和SqlCommand都包装在usi

当SqlConnection和SqlCommand都在单个using块中创建时,它们在退出时都被释放,或者是否需要嵌套using块

using (SqlCommand command = new SqlConnection(ConnectionString).CreateCommand()) {

    // Use command..
}
using块只调用。在块完成执行后,对您声明的资源进行Dispose

因此,是的,您应该将SqlConnection和SqlCommand都包装在using语句中,以确保这两个资源都得到了正确的处理

编辑:也可以使用如下命令进行堆栈:

using (SqlConnection connection = new SqlConnection("connection string"))
    using (SqlCommand command = new SqlCommand("command", connection)) {
       // Your code here
}
using块只调用。在块完成执行后,对您声明的资源进行Dispose

因此,是的,您应该将SqlConnection和SqlCommand都包装在using语句中,以确保这两个资源都得到了正确的处理

编辑:也可以使用如下命令进行堆栈:

using (SqlConnection connection = new SqlConnection("connection string"))
    using (SqlCommand command = new SqlCommand("command", connection)) {
       // Your code here
}

最重要的部分是在using语句的帮助下处理SqlConnection对象。因此,按照您的示例,这将是实现这一点的适当方法:

using (var cn = new SqlConnection(ConnectionString))
{
    cn.Open();

    using (var command = cn.CreateCommand())
    {
        // Use command..
    }
}
在幕后,这就是using语句的含义,您可以理解它如何帮助简化样板文件:

{
    var cn = new SqlConnection(ConnectionString);

    try
    {
        cn.Open();

        {
            var command = cn.CreateCommand();

            try
            {
                // Use command..
            }
            finally
            {
                command.Dispose();
            }
        }
    }
    finally
    {
        cn.Dispose();
    }
}

通过使用using语句处理SqlConnection实例,您可以确保在离开作用域后连接将关闭,即使发生异常。

最重要的部分是在using语句的帮助下处理SqlConnection对象。因此,按照您的示例,这将是实现这一点的适当方法:

using (var cn = new SqlConnection(ConnectionString))
{
    cn.Open();

    using (var command = cn.CreateCommand())
    {
        // Use command..
    }
}
在幕后,这就是using语句的含义,您可以理解它如何帮助简化样板文件:

{
    var cn = new SqlConnection(ConnectionString);

    try
    {
        cn.Open();

        {
            var command = cn.CreateCommand();

            try
            {
                // Use command..
            }
            finally
            {
                command.Dispose();
            }
        }
    }
    finally
    {
        cn.Dispose();
    }
}

通过使用using语句处理SqlConnection实例,您可以确保在离开作用域后连接将关闭,即使发生异常。

是,您需要在这两个方面都使用block。使用块仅用于该对象,而不是可能在其中创建的其他对象。您在这里所拥有的将只处理命令,连接将陷入困境。是的,您需要在连接、命令、任何事务、任何数据读取器等上使用。但是:我强烈建议将所有这些丑陋之处推迟到一个工具上,例如,它使ADO.NET更容易有效地工作,并且是免费的;例如,请参见“是”,您需要在这两个方面都使用块。使用块仅用于该对象,而不是可能在其中创建的其他对象。您在这里所拥有的将只处理命令,连接将陷入困境。是的,您需要在连接、命令、任何事务、任何数据读取器等上使用。但是:我强烈建议将所有这些丑陋之处推迟到一个工具上,例如,它使ADO.NET更容易有效地工作,并且是免费的;有关示例,请参见