SqlConnection
d'ADO.NET implémente un pool de connexions. Cela signifie que lorsque vous fermez ou supprimez une instance de SqlConnection
, la connexion sous-jacente retourne simplement au pool. Lorsqu'une autre instance de SqlConnection
est ouverte et qu'une connexion est disponible dans le pool de connexions, cette connexion sera utilisée.
En fait, la page de documentation Microsoft sur le pooling de connexions SQL Server indique clairement :
Attention
Nous vous recommandons fortement de toujours fermer la connexion lorsque vous avez fini de l'utiliser afin que la connexion soit renvoyée au pool. Pour ce faire, vous pouvez utiliser les méthodes Close ou Dispose de l'objet Connection ou en ouvrant toutes les connexions à l'intérieur d'une instruction using en C# ou d'une instruction Using en Visual Basic. Les connexions qui ne sont pas explicitement fermées peuvent ne pas être ajoutées ou renvoyées au pool. Pour plus d'informations, consultez Utilisation de l'instruction ou Comment :supprimer une ressource système pour Visual Basic.
Cela signifie que la meilleure façon d'utiliser SqlConnection
est-ce :
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
BTW, SqlCommand
, SqlDataReader
et SqlDataAdapter
implémente également le IDisposable
interface, ils doivent donc également être utilisés dans le contexte de using
déclaration :
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))
{
}
}
}