ADO.NETのSqlConnection
は接続プールを実装しています。これは、SqlConnection
のインスタンスを閉じるか破棄する場合を意味します。 、基になる接続は単にプールに戻ります。 SqlConnection
の別のインスタンスの場合 が開かれ、接続プールで接続が利用可能になると、その接続が使用されます。
実際、SQLServer接続プールのMicrosoftドキュメントページには次のように明記されています。
注意
接続がプールに戻されるように、使用が終了したら常に接続を閉じることを強くお勧めします。これを行うには、ConnectionオブジェクトのCloseメソッドまたはDisposeメソッドを使用するか、C#のusingステートメントまたはVisualBasicのUsingステートメント内のすべての接続を開きます。明示的に閉じられていない接続は、プールに追加または戻されない場合があります。詳細については、「ステートメントの使用」または「方法:VisualBasicのシステムリソースを破棄する」を参照してください。
これは、SqlConnection
を使用するベストプラクティスの方法を意味します これは:
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
ところで、SqlCommand
、SqlDataReader
およびSqlDataAdapter
IDisposable
も実装します インターフェースなので、それらもusing
のコンテキストで使用する必要があります ステートメント:
using(var con = new SqlConnection(connectionString))
{
using(var cmd = new SqlCommand(sql, con))
{
// prepare command here - parameters and stuff like that
// either
using(var reader = cmd.ExecuteReader())
{
}
// or
using(var adapter = new SqlDataAdapter(cmd))
{
}
}
}