Partilhar via


SqlConnection.Close Método

Definição

Fecha a conexão com o banco de dados. Esse é o método preferencial de fechamento de uma conexão aberta.

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

Exceções

O erro no nível da conexão que ocorreu ao abri-la.

Exemplos

O exemplo a seguir cria um SqlConnection, o abre e exibe algumas de suas propriedades. A conexão é fechada automaticamente no final do using bloco.

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

Comentários

O Close método reverte todas as transações pendentes. Em seguida, ele libera a conexão com o pool de conexões ou fecha a conexão se o pool de conexões estiver desabilitado.

Observação

As transações pendentes começaram a usar o Transact-SQL ou BeginTransaction são revertidas automaticamente quando a conexão é redefinida se o pool de conexões estiver habilitado. Se o pool de conexões estiver desativado, a transação será revertida após SqlConnection.Close ser chamada. As transações iniciadas por meio System.Transactions são controladas por meio da System.Transactions infraestrutura e não são afetadas pelo SqlConnection.Close.

Um aplicativo pode chamar Close mais de uma vez. Nenhuma exceção é gerada.

Se o SqlConnection sair do escopo, ele não será fechado. Portanto, você deve fechar explicitamente a conexão chamando Close ou Dispose. Close e Dispose são funcionalmente equivalentes. Se o valor Pooling do pool de conexões for definido como true ou yes, a conexão subjacente será retornada de volta ao pool de conexões. Por outro lado, se Pooling estiver definido como false ou no, a conexão subjacente com o servidor será fechada.

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. Para obter mais informações, consulte Pool de Conexões do SQL Server (ADO.NET).

Cuidado

Não chame Close nem Dispose em um Connection, um DataReader ou qualquer outro objeto gerenciado no Finalize método de sua classe. Em um finalizador, você só deve liberar recursos não gerenciados que sua classe possui diretamente. Se a classe não tiver nenhum recurso não gerenciado, não inclua um método Finalize em sua definição de classe. Para obter mais informações, confira Coleta de lixo.

Aplica-se a