Share via


SqlConnection.Close Metodo

Definizione

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

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

Eccezioni

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

Esempio

Nell'esempio seguente viene creato un SqlConnectionoggetto , che viene aperto, vengono visualizzate alcune delle relative proprietà. La connessione viene chiusa automaticamente alla fine del using blocco.

using Microsoft.Data.SqlClient;

class Program1
{
    static void Main()
    {
        string s = GetConnectionString();

        OpenSqlConnection(s);
        Console.ReadLine();
    }

    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);
        }
    }

    static private string GetConnectionString()
    {
        // To avoid storing the connection string in your code, 
        // you can retrieve it from a configuration file, using the 
        // System.Configuration.ConfigurationSettings.AppSettings property 
        return "Data Source=(local);Initial Catalog=AdventureWorks;"
            + "Integrated Security=SSPI;";
    }
}

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 automaticamente ripristinate quando la connessione viene reimpostata se il pool di connessioni è abilitato. Se il pool di connessioni è disattivato, viene eseguito il rollback della transazione dopo SqlConnection.Close la chiamata. Le transazioni avviate tramite System.Transactions vengono controllate tramite l'infrastruttura System.Transactions e non sono interessate da SqlConnection.Close.

Un'applicazione può chiamare Close più volte. Non viene generata alcuna eccezione.

Se l'oggetto 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 su un oggetto Connection, un DataReader o qualsiasi altro oggetto gestito nel Finalize metodo della classe. In un finalizzatore è consigliabile rilasciare direttamente le risorse non gestite di proprietà della classe. 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