Condividi tramite


SqlConnection.Close Metodo

Definizione

Chiude la connessione al database. È il metodo preferito di chiusura di una connessione aperta.

public:
 override void Close();
public:
 virtual void Close();
public override void Close ();
public void Close ();
override this.Close : unit -> unit
abstract member Close : unit -> unit
override this.Close : unit -> unit
Public Overrides Sub Close ()
Public Sub Close ()

Implementazioni

Eccezioni

Errore a livello di connessione che si è verificato durante l'apertura della stessa.

Esempio

L'esempio seguente crea un SqlConnectionoggetto , lo apre, visualizza alcune delle relative proprietà. La connessione viene chiusa automaticamente alla fine del using blocco.

private static void OpenSqlConnection(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State);
    }
}
Private Sub OpenSqlConnection(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("State: {0}", connection.State)
    End Using
End Sub

Commenti

Il metodo esegue il Close rollback di tutte le transazioni in sospeso. Rilascia quindi la connessione al pool di connessioni o chiude la connessione se il pool di connessioni è disabilitato.

Nota

Le transazioni in sospeso avviate con Transact-SQL o BeginTransaction vengono eseguito automaticamente il rollback quando la connessione viene reimpostata se il pool di connessioni è abilitato. Se il pool di connessioni è disattivato, la transazione viene eseguito il rollback dopo SqlConnection.Close la chiamata. Le transazioni avviate tramite System.Transactions l'infrastruttura System.Transactions sono controllate e non sono interessate da SqlConnection.Close.

Un'applicazione può chiamare Close più di una volta. Nessuna eccezione viene generata.

Se l'ambito esce dall'ambito SqlConnection , non verrà chiuso. Pertanto, è necessario chiudere in modo esplicito la connessione chiamando Close o Dispose. Close e Dispose sono equivalenti a livello funzionale. Se il valore Pooling del pool di connessioni è impostato su true o yes, la connessione sottostante viene restituita al pool di connessioni. D'altra parte, se Pooling è impostato su false o no, la connessione sottostante al server viene chiusa.

Nota

Nel server non vengono generati eventi di accesso e di disconnessione quando una connessione viene recuperata dal o restituita al pool di connessioni, in quanto la connessione non viene effettivamente chiusa quando viene restituita al pool di connessioni. Per altre informazioni, vedere Pool di connessioni SQL Server (ADO.NET).

Attenzione

Non chiamare Close o Dispose in una connessione, un DataReader o qualsiasi altro oggetto gestito nel Finalize metodo della classe. In un finalizzatore, è consigliabile rilasciare direttamente le risorse non gestite che la classe possiede direttamente. Se nella classe non sono presenti risorse non gestite, non includere un metodo Finalize nella relativa definizione della classe. Per altre informazioni, vedere Garbage Collection.

Si applica a

Vedi anche