SqlConnection.Close Método

Definição

Fecha a conexão com o banco de dados.Closes the connection to the database. Esse é o método preferencial de fechamento de uma conexão aberta.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 ()

Implementações

Exceções

O erro no nível da conexão que ocorreu ao abri-la.The connection-level error that occurred while opening the connection.

Exemplos

O exemplo a seguir cria um SqlConnection , abre-o, exibe algumas de suas propriedades.The following example creates a SqlConnection, opens it, displays some of its properties. A conexão é fechada automaticamente no final do using bloco.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

Comentários

O Close método reverte todas as transações pendentes.The Close method rolls back any pending transactions. Em seguida, ele libera a conexão para o pool de conexões ou fecha a conexão se o pool de conexões estiver desabilitado.It then releases the connection to the connection pool, or closes the connection if connection pooling is disabled.

Observação

Transações pendentes iniciadas usando Transact-SQL ou BeginTransaction são revertidas automaticamente quando a conexão é redefinida se o pool de conexões está habilitado.Pending transactions started using Transact-SQL or BeginTransaction are automatically rolled back when the connection is reset if connection pooling is enabled. Se o pool de conexões estiver desativado, a transação será revertida após SqlConnection.Close ser chamada.If connection pooling is off, the transaction is rolled back after SqlConnection.Close is called. As transações iniciadas por meio System.Transactions do são controladas por meio da System.Transactions infraestrutura e não são afetadas pelo SqlConnection.Close .Transactions started through System.Transactions are controlled through the System.Transactions infrastructure, and are not affected by SqlConnection.Close.

Um aplicativo pode chamar Close mais de uma vez.An application can call Close more than one time. Nenhuma exceção é gerada.No exception is generated.

Se SqlConnection sair do escopo, ele não será fechado.If the SqlConnection goes out of scope, it won't be closed. Portanto, você deve fechar explicitamente a conexão chamando Close ou Dispose .Therefore, you must explicitly close the connection by calling Close or Dispose. Close e Dispose são funcionalmente equivalentes.Close and Dispose are functionally equivalent. Se o valor do pooling de conexão Pooling for definido como true ou yes , a conexão subjacente será retornada ao pool de conexões.If the connection pooling value Pooling is set to true or yes, the underlying connection is returned back to the connection pool. Por outro lado, se Pooling é definido como false ou no , a conexão subjacente ao servidor é fechada.On the other hand, if Pooling is set to false or no, the underlying connection to the server is closed.

Observação

Eventos de logon e logout não serão gerados no servidor quando uma conexão for procurada de ou retornada para o pool de conexões, porque a conexão não é fechada realmente quando é retornada para o pool de conexões.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 obter mais informações, consulte Pool de Conexões do SQL Server (ADO.NET).For more information, see SQL Server Connection Pooling (ADO.NET).

Cuidado

Não chame Close ou Dispose em uma conexão, um DataReader ou qualquer outro objeto gerenciado no Finalize método da sua classe.Do not call Close or Dispose on a Connection, a DataReader, or any other managed object in the Finalize method of your class. Em um finalizador, você só deve liberar recursos não gerenciados que sua classe possui diretamente.In a finalizer, you should only release unmanaged resources that your class owns directly. Se a classe não tiver nenhum recurso não gerenciado, não inclua um método Finalize em sua definição de classe.If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. Para obter mais informações, confira Coleta de lixo.For more information, see Garbage Collection.

Aplica-se a