SqlConnection.Close Método

Definición

Cierra la conexión con la base de datos.Closes the connection to the database. Es el método preferido para cerrar cualquier conexión abierta.This is the preferred method of closing any open connection.

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 ()

Implementaciones

Excepciones

Error de nivel de conexión ocasionado al abrir la conexión.The connection-level error that occurred while opening the connection.

Ejemplos

En el ejemplo siguiente se crea un SqlConnection, se abre, se muestran algunas de sus propiedades.The following example creates a SqlConnection, opens it, displays some of its properties. La conexión se cierra automáticamente al final del bloque de using.The connection is automatically closed at the end of the using block.

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

Comentarios

El método Close revierte las transacciones pendientes.The Close method rolls back any pending transactions. A continuación, libera la conexión al grupo de conexiones o cierra la conexión si la agrupación de conexiones está deshabilitada.It then releases the connection to the connection pool, or closes the connection if connection pooling is disabled.

Nota

Las transacciones pendientes iniciadas con Transact-SQLTransact-SQL o BeginTransaction se revierten automáticamente cuando se restablece la conexión si la agrupación de conexiones está habilitada.Pending transactions started using Transact-SQLTransact-SQL or BeginTransaction are automatically rolled back when the connection is reset if connection pooling is enabled. Si la agrupación de conexiones está desactivada, la transacción se revierte una vez que se llama a SqlConnection.Close.If connection pooling is off, the transaction is rolled back after SqlConnection.Close is called. Las transacciones que se inician a través de System.Transactions se controlan a través de la infraestructura de System.Transactions y no se ven afectadas por SqlConnection.Close.Transactions started through System.Transactions are controlled through the System.Transactions infrastructure, and are not affected by SqlConnection.Close.

Una aplicación puede llamar Close más de una vez.An application can call Close more than one time. No se genera ninguna excepción.No exception is generated.

Si el SqlConnection sale del ámbito, no se cerrará.If the SqlConnection goes out of scope, it won't be closed. Por lo tanto, debe cerrar explícitamente la conexión llamando a Close o Dispose.Therefore, you must explicitly close the connection by calling Close or Dispose. Close y Dispose son funcionalmente equivalentes.Close and Dispose are functionally equivalent. Si el valor Pooling de la agrupación de conexiones se establece en true o yes, la conexión subyacente se devuelve al grupo de conexiones.If the connection pooling value Pooling is set to true or yes, the underlying connection is returned back to the connection pool. Por otro lado, si Pooling está establecido en false o no, se cierra la conexión subyacente al servidor.On the other hand, if Pooling is set to false or no, the underlying connection to the server is closed.

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.Login and logout events will not be raised on the server when a connection is fetched from or returned to the connection pool, because the connection is not actually closed when it is returned to the connection pool. Para más información, consulte el artículo sobre la agrupación de conexiones de SQL Server (ADO.NET).For more information, see SQL Server Connection Pooling (ADO.NET).

Precaución

No llame a Close o Dispose en una conexión, un DataReader o cualquier otro objeto administrado en el método Finalize de la clase.Do not call Close or Dispose on a Connection, a DataReader, or any other managed object in the Finalize method of your class. En un finalizador, solo debe liberar los recursos no administrados que la clase posea directamente.In a finalizer, you should only release unmanaged resources that your class owns directly. Si la clase no dispone de recursos no administrados, no incluya un método Finalize en la definición de clase.If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. Para obtener más información, consulte recolección de elementos no utilizados.For more information, see Garbage Collection.

Se aplica a

Consulte también: