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()
メソッド (接続を閉じる) が自動的に呼び出されます。
2 番目の質問:
このコード ブロック内:
<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
はリソースのクリーンアップを確実にするために常に閉じられます。
以上がSqlConnectionは戻り時または例外時に「使用中」ブロックで閉じますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。