Compartir a través de


SqlConnection.Close Método

Definición

Cierra la conexión con la base de datos. Es el método preferido para cerrar cualquier conexión abierta.

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

Excepciones

Error de nivel de conexión ocasionado al abrir la conexión.

Ejemplos

En el ejemplo siguiente se crea un SqlConnection, se abre, se muestran algunas de sus propiedades. La conexión se cierra automáticamente al final del using bloque.

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

Comentarios

El Close método revierte las transacciones pendientes. A continuación, libera la conexión al grupo de conexiones o cierra la conexión si la agrupación de conexiones está deshabilitada.

Nota:

Las transacciones pendientes que se inician con Transact-SQL o BeginTransaction se revierten automáticamente cuando se restablece la conexión si la agrupación de conexiones está habilitada. Si la agrupación de conexiones está desactivada, la transacción se revierte después SqlConnection.Close de llamar a . Las transacciones iniciadas a través System.Transactions de se controlan a través de la System.Transactions infraestructura y no se ven afectadas por SqlConnection.Close.

Una aplicación puede llamar a Close más de una vez. No se genera ninguna excepción.

SqlConnection Si sale del ámbito, no se cerrará. Por lo tanto, debe cerrar explícitamente la conexión llamando a Close o Dispose. Close y Dispose son funcionalmente equivalentes. Si el valor Pooling de agrupación de conexiones se establece true en o yes, la conexión subyacente se devuelve al grupo de conexiones. Por otro lado, si Pooling se establece false en o no, se cierra la conexión subyacente al servidor.

Nota:

Los eventos de inicio y cierre de sesión no se provocarán en el servidor cuando se busque una conexión desde el grupo de conexiones o se devuelva a éste, puesto que la conexión no está cerrada realmente cuando se devuelve al grupo de conexiones. Para obtener más información, vea Agrupación de conexiones de SQL Server (ADO.NET).

Precaución

No llame a Close o Dispose en una conexión, un Objeto DataReader o cualquier otro objeto administrado en el método de la Finalize clase . En un finalizador, solo debe liberar recursos no administrados que su clase posee directamente. Si la clase no dispone de recursos no administrados, no incluya un método Finalize en la definición de clase. Para obtener más información, consulte Recolección de elementos no utilizados.

Se aplica a