ADO.NET's SqlConnection
implementeert een verbindingspool. Dit betekent dat wanneer u een exemplaar van SqlConnection
sluit of verwijdert , keert de onderliggende verbinding gewoon terug naar de pool. Wanneer een ander exemplaar van SqlConnection
is geopend en er een verbinding beschikbaar is in de verbindingspool, wordt die verbinding gebruikt.
In feite vermeldt de Microsoft-documentpagina op SQL Server Connection Pooling duidelijk:
Let op
We raden u ten zeerste aan om de verbinding altijd te sluiten als u klaar bent met het gebruik ervan, zodat de verbinding wordt teruggegeven aan de pool. U kunt dit doen met de methoden Close of Dispose van het Connection-object, of door alle verbindingen in een gebruiksinstructie in C# of een gebruiksinstructie in Visual Basic te openen. Verbindingen die niet expliciet zijn gesloten, worden mogelijk niet toegevoegd aan of geretourneerd aan de pool. Voor meer informatie, zie Verklaring gebruiken of Procedure:een systeembron verwijderen voor Visual Basic.
Dit betekent dat de beste manier om SqlConnection
. te gebruiken is dit:
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
Tussen haakjes, SqlCommand
, SqlDataReader
en SqlDataAdapter
implementeert ook de IDisposable
interface, dus ook zij moeten worden gebruikt in de context van de using
verklaring:
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))
{
}
}
}