using
명령문 블록에서 SqlConnection 닫기 동작: 반환 값 및 예외
using
반환 또는 예외 시 문 블록이 닫히나요SqlConnection
? 이 동작을 살펴보겠습니다.
첫 번째 질문:
다음 코드 블록에서:
<code class="language-csharp">using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string storedProc = "GetData"; SqlCommand command = new SqlCommand(storedProc, connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID)); return (byte[])command.ExecuteScalar(); }</code>
정답: 네, 연결이 종료됩니다.
using
문 블록은 조기 반환이 발생하는 경우에도 IDisposable
리소스(예: SqlConnection
)가 올바르게 해제되도록 보장합니다. 코드가 using
블록을 종료하면 Dispose()
메서드(연결을 닫는)가 자동으로 호출됩니다.
두 번째 질문:
이 코드 블록에서:
<code class="language-csharp">try { using (SqlConnection connection = new SqlConnection(connectionString)) { int employeeID = findEmployeeID(); connection.Open(); SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID)); command.CommandTimeout = 5; command.ExecuteNonQuery(); } } catch (Exception) { /*处理错误*/ }</code>
답변: 네, 연결은 계속 종료됩니다.
using
문 블록에서 예외가 발생하더라도 코드는 즉시 catch
블록으로 점프하고, using
문 블록을 종료해도 SqlConnection
은 계속 해제됩니다.
요약:
using
문 블록이 반환 값이나 예외를 통해 종료되는지 여부에 관계없이 SqlConnection
은 리소스 정리를 위해 항상 닫힙니다.
위 내용은 반환 또는 예외 시 'Using' 블록에서 SqlConnection이 닫히나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!