Continuo a trovare risultati contrastanti per questa domanda. Diamo un'occhiata a questo codice C# di eseguire una query SQL:Devo chiudere la connessione di SQL Server con la parola chiave using?
using (SqlConnection cn = new SqlConnection(strConnectString))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(strSQL, cn))
{
cmd.ExecuteNonQuery();
}
//Do I need to call?
cn.Close();
}
Devo chiamare quell'ultimo cn.Close()
? Il motivo per cui ti sto chiedendo è che in un'app web con traffico intenso sono a corto di connessioni in una piscina.
Grazie. La domanda è: la connessione viene chiusa immediatamente oppure viene chiusa quando arriva il garbage collector? Perché questo fa la differenza nel mio caso. – c00000fd
"Assicurati di utilizzare la stessa stringa di connessione" - cosa intendi con questo? Definisci 'SqlConnection cn' come variabile statica? – c00000fd
"Finalizzazione non deterministica" = ** errato **. La connessione è * eliminata * immediatamente dopo essere uscito dall'ambito dell'istruzione 'using'. Questo non ha nulla a che fare con la garbage collection. In effetti, il GC non deterministico è esattamente il motivo per cui l'interfaccia IDisposable e il Dispose Pattern sono stati introdotti in .NET. –