ホームページ >バックエンド開発 >C++ >SqlConnectionは戻り時または例外時に「使用中」ブロックで閉じますか?

SqlConnectionは戻り時または例外時に「使用中」ブロックで閉じますか?

DDD
DDDオリジナル
2025-01-15 16:57:44542ブラウズ

Does SqlConnection Close in a

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。