コマンドが破棄され、コマンドで接続が直接定義されると、接続は閉じますか?

StackOverflow https://stackoverflow.com/questions/410222

  •  03-07-2019
  •  | 
  •  

質問

ブロックの使用:SqlConnectionが定義され、次にSqlCommandが定義される多くの例が存在することを知っています:

using (var conn = new SqlConnection(connString)) {
      using (var cmd = new SqlCommand()) {
        cmd.Connection = conn;
        //open the connection
      }
}

私の質問:SqlCommandで直接接続を定義する場合、コマンドが破棄されたときに接続は閉じますか?

using (var cmd = new SqlCommand()) {
      cmd.Connection = new SqlConnection(connString);
      //open the connection
}
役に立ちましたか?

解決

いいえ、SqlCommandは接続のクローズ/破棄を試行しません。

他のヒント

いいえ、接続オブジェクトは明示的に破棄するまで破棄されません。ただし、できる限り、ブロックを使用することをお勧めします。

接続は閉じられません。自分で閉じるか、statmentを使用して接続する必要があります。

また、 using ブロックをもう少し読みやすくするためのヒントがあります:

using (var conn = new SqlConnection(connString))
using (var cmd = new SqlCommand())
{
    cmd.Connection = conn;
}

@milot

  

ただし、できる限りブロックを使用することをお勧めします。

Use Blocksの使用は便利ですが、IDisposable以外のオブジェクトを使用する場合は役に立たないため、Using Blocksをどこでも使用すると混乱を招く可能性があります。

IDisposableを実装していない場合、オブジェクトが破棄されない可能性があるため、注意してください。

これがお役に立てば幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top