在使用(){}块内部使用SqlConnection.Open?

Kar*_*nth 1 c# sql-server asp.net

我需要在SqlConnection.Open()里面使用:

using (SqlConnection var = new SqlConnection()) 
{
   //my operations
}
Run Code Online (Sandbox Code Playgroud)

如果我不通过SqlConnection.Close()功能处理此连接会发生什么?

Col*_*kay 9

是的,您需要Openusing块内进行连接.

如果您没有明确地Close()建立连接,则using块的末尾将为您执行此操作,因为使用处理连接.连接处理后,它会自动关闭.


Kir*_*kiy 5

using语句只是语法糖,它确保无论如何Dispose都会在实例上调用,因此在您的情况下大致相当于(根据 MSDN):IDisposableusing (SqlConnection connection = new SqlConnection())

SqlConnection connection = new SqlConnection();

try
{
    // Operations.
}
finally
{
    if (connection != null)
    {
        connection.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

SqlConnection Dispose在和的情况下,Close调用实际上是等效的,因此对 的调用Close在块内是多余的using (SqlConnection)

Open另一方面,在许多情况下调用仍然是必要的(例如,在调用 , , 之前ExecuteReaderExecuteScalarExecuteNonQueryusing语句对您是否需要显式打开连接没有影响 - 仅对您是否需要显式关闭它有影响。