Возможный дубликат:
Нужно ли закрывать DbConnection, если используется предложение using?
OledbConnection.Dispose()
закрывает соединение?
Я знаю, что SqlConnection
делает, но как насчет OledbConnection
?
Возможный дубликат:
Нужно ли закрывать DbConnection, если используется предложение using?
OledbConnection.Dispose()
закрывает соединение?
Я знаю, что SqlConnection
делает, но как насчет OledbConnection
?
Да, тоже.
Источник: метод OleDbConnection.Dispose (логический)
Метод Dispose вызывает Close и удаляет OleDbConnection из пула соединений.
Подробную информацию см. в разделе Remarks
справочной ссылки, чтобы узнать о случае освобождения как управляемых, так и неуправляемых ресурсов.
Да, согласно документации на MSDN http://msdn.microsoft.com/en-us/library/aa325890(v=vs.71).aspx , OleDbConnection.Dispose()
также вызывает OleDbConnection.Close()
.
Да, работает MSDN:
Метод Dispose вызывает Close и удаляет OleDbConnection из пула соединений.
Обратите внимание, что приведенное выше относится к .NET Framework 1.1. Но (в этом случае) вы можете рассчитывать на то, что ничего не изменится.
Кроме того, вы можете быть почти на 100 % уверены, что каждый класс, реализующий IDbConnection
, «закроет» соединение в методе Dispose
— что бы это ни значило для конкретной реализации, это не имеет значения, но это будет эквивалентно вызову Close
вручную.
Каждая реализация, которая не ведет себя таким образом, должна считаться ИМО сломанной.
Вот окончательное доказательство... фактический код метода Dispose
, полученный с помощью рефлектора:
// System.Data.OleDb.OleDbConnection
protected override void Dispose(bool disposing)
{
if (disposing)
{
this._userConnectionOptions = null;
this._poolGroup = null;
this.Close();
}
this.DisposeMe(disposing);
base.Dispose(disposing);
}
Да. Если нет, то он не может полностью распоряжаться своими ресурсами. BinaryReader, BinaryWriter и т. д. также закрывают базовый поток.
using
, который удалит соединение, поскольку код внутри блокаusing
завершает выполнение. - person shahkalpeshp   schedule 20.08.2012SqlConnection
.DbConnection
— это абстрактный класс, поэтому он зависит от фактической реализацииOledbConnection
. - person CJ7   schedule 20.08.2012