SqlConnection
на ADO.NET внедрява пул за връзки. Това означава, че когато затворите или изхвърлите екземпляр на SqlConnection
, основната връзка просто се връща към пула. Когато друг екземпляр на SqlConnection
е отворен и връзка е налична в пула за връзки, тази връзка ще бъде използвана.
Всъщност, страницата на Microsoft с документи на SQL Server Connection Pooling ясно казва:
Внимание
Настоятелно препоръчваме винаги да затваряте връзката, когато приключите с използването й, така че връзката да бъде върната в пула. Можете да направите това, като използвате методите Close или Dispose на обекта Connection, или като отворите всички връзки в оператор using в C# или оператор Using във Visual Basic. Връзките, които не са изрично затворени, може да не бъдат добавени или върнати в пула. За повече информация вижте използването на изявление или Как да:изхвърляне на системен ресурс за Visual Basic.
Това означава, че най-добрият начин за използване на SqlConnection
това е:
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
BTW, 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))
{
}
}
}