SqlConnection
ADO.NET implementuje fond připojení. To znamená, že když zavřete nebo zlikvidujete instanci SqlConnection
, základní připojení se jednoduše vrátí do fondu. Když další instance SqlConnection
Pokud se otevře a ve fondu připojení je k dispozici připojení, toto připojení bude použito.
Stránka Microsoft docs na SQL Server Connection Pooling jasně uvádí:
Pozor
Důrazně doporučujeme, abyste po ukončení používání připojení vždy ukončili, aby se připojení vrátilo do fondu. To lze provést pomocí metod Close nebo Dispose objektu Connection nebo otevřením všech připojení uvnitř příkazu using v jazyce C# nebo příkazu Using v jazyce Visual Basic. Připojení, která nejsou explicitně uzavřena, nemusí být přidána nebo vrácena do fondu. Další informace naleznete v tématu Použití příkazu nebo Postup:Likvidace systémových prostředků pro Visual Basic.
To znamená, že je to osvědčený způsob použití SqlConnection
je toto:
using(var con = new SqlConnection(connectionString))
{
// your sql stuff goes here...
}
BTW, SqlCommand
, SqlDataReader
a SqlDataAdapter
také implementuje IDisposable
rozhraní, takže je také třeba použít v kontextu using
prohlášení:
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))
{
}
}
}