Freigeben über


SqlConnection.Close Methode

Definition

Schließt die Verbindung mit der Datenbank. Dies ist die bevorzugte Methode zum Schließen offener Verbindungen.

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

Ausnahmen

Der Fehler auf Verbindungsebene, der beim Öffnen der Verbindung aufgetreten ist.

Beispiele

Im folgenden Beispiel wird eine SqlConnectionerstellt, die geöffnet wird und einige seiner Eigenschaften anzeigt. Die Verbindung wird am Ende des using Blocks automatisch geschlossen.

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

Hinweise

Die Close -Methode führt ein Rollback für alle ausstehenden Transaktionen aus. Anschließend wird die Verbindung mit dem Verbindungspool freigegeben oder die Verbindung geschlossen, wenn das Verbindungspooling deaktiviert ist.

Hinweis

Ausstehende Transaktionen wurden mithilfe von Transact-SQL gestartet oder BeginTransaction werden automatisch zurückgesetzt, wenn die Verbindung zurückgesetzt wird, wenn das Verbindungspooling aktiviert ist. Wenn das Verbindungspooling deaktiviert ist, wird ein Rollback für die Transaktion ausgeführt, nachdem SqlConnection.Close aufgerufen wurde. Transaktionen, die über System.Transactions gestartet werden, werden über die System.Transactions Infrastruktur gesteuert und sind von nicht betroffen SqlConnection.Close.

Eine Anwendung kann mehrere Aufrufe Close ausführen. Es wird keine Ausnahme generiert.

Wenn der SqlConnection außerhalb des Gültigkeitsbereichs liegt, wird es nicht geschlossen. Daher müssen Sie die Verbindung explizit schließen, indem Sie oder DisposeaufrufenClose. Close und Dispose funktional gleichwertig sind. Wenn der Wert Pooling für das Verbindungspooling auf true oder yesfestgelegt ist, wird die zugrunde liegende Verbindung an den Verbindungspool zurückgegeben. Wenn hingegen auf false oder nofestgelegt ist, Pooling wird die zugrunde liegende Verbindung mit dem Server geschlossen.

Hinweis

Wenn eine Verbindung aus dem Verbindungspool abgerufen oder an diesen zurückgegeben wird, werden keine Anmelde- und Abmeldeereignisse auf dem Server ausgelöst, da die Verbindung bei der Rückgabe an den Verbindungspool nicht geschlossen wird. Weitere Informationen finden Sie unter SQL Server-Verbindungspooling (ADO.NET).

Achtung

Rufen Close Sie keine Dispose Connection, einen DataReader oder ein anderes verwaltetes Objekt in der Finalize -Methode Ihrer -Klasse auf oder auf. In einem Finalizer sollten Sie nur nicht verwaltete Ressourcen freigeben, die ihre Klasse direkt besitzt. Wenn die Klasse keine nicht verwalteten Ressourcen besitzt, definieren Sie in der Klasse keine Finalize-Methode. Weitere Informationen finden Sie unter Garbage Collection.

Gilt für: