SqlConnection
ADO.NET implementuje pulę połączeń. Oznacza to, że gdy zamykasz lub usuwasz instancję SqlConnection
, podstawowe połączenie po prostu wraca do puli. Kiedy inna instancja SqlConnection
jest otwarte, a połączenie jest dostępne w puli połączeń, to połączenie będzie używane.
W rzeczywistości strona Microsoft Docs na temat puli połączeń programu SQL Server wyraźnie stwierdza:
Uwaga
Zdecydowanie zalecamy, aby zawsze zamykać połączenie po zakończeniu korzystania z niego, aby połączenie zostało przywrócone do puli. Można to zrobić za pomocą metod Close lub Dispose obiektu Connection lub otwierając wszystkie połączenia wewnątrz instrukcji using w C# lub instrukcji Using w Visual Basic. Połączenia, które nie są jawnie zamknięte, mogą nie zostać dodane ani zwrócone do puli. Aby uzyskać więcej informacji, zobacz Korzystanie z instrukcji lub How to:Dispose of a Resource Resource for Visual Basic.
Oznacza to, że najlepszą praktyką jest używanie SqlConnection
jest to:
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
BTW, SqlCommand
, SqlDataReader
i SqlDataAdapter
implementuje również IDisposable
interfejs, więc one również muszą być używane w kontekście using
oświadczenie:
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))
{
}
}
}