c# - Quando dovrei aprire e chiudere una connessione a SQL Server



3 Answers

Poiché SqlConnection dispone di un pool di connessioni quando si chiama Open () e Close () non si sta effettivamente aprendo e chiudendo la connessione fisica al server. Stai solo aggiungendo / rimuovendo la connessione da un pool di connessioni disponibili. Per questo motivo è buona norma aprire la connessione il più tardi possibile e chiudere la connessione il prima possibile dopo aver eseguito il comando.

c# .net sql data-binding sqlconnection

Ho una semplice classe statica con alcuni metodi. Ognuno di questi metodi apre un SqlConnection, interroga il database e chiude la connessione. In questo modo, sono sicuro di chiudere sempre la connessione al database, ma d'altra parte, non mi piace aprire e chiudere sempre la connessione. Di seguito è riportato un esempio di come sono i miei metodi.

public static void AddSomething(string something)
{
    using (SqlConnection connection = new SqlConnection("..."))
    {
        connection.Open();
        // ...
        connection.Close();
    }
}

Considerando che i metodi si trovano all'interno di una classe statica, dovrei avere un membro statico contenente un singolo SqlConnection? Come e quando dovrei lasciarlo? Quali sono le migliori pratiche?




La maggior parte dei programmatori crede in aperto in ritardo e si chiude presto. Questo è solo un problema se la latenza per aprire e chiudere la connessione ogni volta fa rallentare l'intera applicazione.

Nel tuo caso con una classe statica è probabilmente meglio aprire e chiudere la connessione ogni volta.




Non fare mai affidamento sulla connessione per chiudersi. Se non è esplicitamente chiuso, porterà a problemi di prestazioni. È successo a noi sul nostro progetto. Sì, sono consapevole che le connessioni sono gestite da un pool di connessioni, ma devono ancora essere chiuse e restituite al pool.




Related