SqlConnection.Close Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Закрывает соединение с базой данных. Рекомендуется использовать этот метод для закрытия любого открытого подключения.
public:
override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()
Исключения
При открытии подключения произошла ошибка на уровне подключения.
Примеры
В следующем примере создается SqlConnectionобъект , открывает его и отображает некоторые его свойства. Подключение автоматически закрывается в конце using
блока.
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;";
}
}
Комментарии
Метод Close откатывает все ожидающие транзакции. Затем он освобождает подключение к пулу подключений или закрывает его, если пул подключений отключен.
Примечание
Ожидающие транзакции запускаются с помощью Transact-SQL или BeginTransaction автоматически откатываются при сбросе подключения, если включен пул подключений. Если пул подключений отключен, транзакция выполняется откат после SqlConnection.Close
вызова . Транзакции, запущенные через System.Transactions , контролируются через инфраструктуру System.Transactions
и не затрагиваются SqlConnection.Close
.
Приложение может вызывать метод Close более одного раза, исключения при этом не возникают.
Если объект SqlConnection выходит за пределы области, он не будет закрыт. Поэтому необходимо явно закрыть подключение, вызвав или Close
Dispose
. Close
и Dispose
функционально эквивалентны. Если значение Pooling
пула подключений равно true
или yes
, базовое подключение возвращается обратно в пул подключений. С другой стороны, если Pooling
задано значение false
или no
, базовое подключение к серверу закрывается.
Примечание
События входа в систему и выхода из системы не вызываются на сервере при выборке подключения из пула подключений и при возврате его в пул подключений, поскольку при возврате в пул подключений подключение фактически не закрывается. Дополнительные сведения см. в разделе Пулы подключений SQL Server (ADO.NET).
Внимание!
Не вызывайте Close
метод connection Dispose
, DataReader или любой другой управляемый объект в методе Finalize
класса . В средстве завершения следует освобождать только неуправляемые ресурсы, которыми ваш класс владеет напрямую. Если класс не владеет какими-либо неуправляемыми ресурсами, не включайте в его определение метод Finalize
. Дополнительные сведения см. в статье Сборка мусора.