SqlConnection.Close Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.