8

SqlConnection が定義され、次に SqlCommand が定義されている多くの例が、両方とも Using ブロックに存在することを知っています。

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
}
4

4 に答える 4

11

いいえ、SqlCommand が接続を閉じたり破棄したりすることはありません。

于 2009-01-04T01:26:46.193 に答える
5

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

于 2009-01-04T01:29:28.793 に答える
5

接続は閉じません。自分で閉じるか、独自の using ステートメントに入れる必要があります。

usingまた、ブロックをもう少し読みやすくするためのヒントを次に示します。

using (var conn = new SqlConnection(connString))
using (var cmd = new SqlCommand())
{
    cmd.Connection = conn;
}
于 2009-01-04T01:33:05.933 に答える
-2

@milot

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

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

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

お役に立てれば。

于 2009-01-04T01:59:09.857 に答える