コマンドが破棄され、コマンドで接続が直接定義されると、接続は閉じますか?
-
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を実装していない場合、オブジェクトが破棄されない可能性があるため、注意してください。
これがお役に立てば幸いです。
所属していません StackOverflow