Закрытие OleDbConnection

Просто общий вопрос: если я открою OleDbConnection в своей программе, должен ли я закрыть его в какой-то момент? Я спрашиваю только потому, что видел несколько руководств, в которых докладчик не включает оператор для закрытия соединения.

В моих конкретных обстоятельствах я открываю соединение для доступа к файлу Excel, заполняю DataTable и получаю некоторые значения. Однако после этого у меня нет причин открывать соединение, и я думаю, что это, вероятно, вызовет некоторые проблемы, если я оставлю его открытым.

Кроме того, достаточно ли оператора conn.Close();, чтобы закрыть соединение?


person Joe Cambareri    schedule 27.10.2015    source источник
comment
вы всегда должны закрывать соединение. Если не только для снижения нагрузки на ваш сервер. И если вы больше не собираетесь его использовать, я бы также вызвал conn.Dispose. Кстати, вы когда-нибудь слышали об утверждении «using»?   -  person Dieter B    schedule 27.10.2015
comment
Да, conn.Close(); достаточно, но оператор using чище, а также гарантирует, что соединение будет закрыто, даже если возникнет исключение.   -  person 500 - Internal Server Error    schedule 27.10.2015
comment
Спасибо, я ценю это!   -  person Joe Cambareri    schedule 27.10.2015


Ответы (2)


Да, вы должны закрыть соединение, как только вы закончите с ним. Если вы используете свое соединение в одном методе, а не сразу после него, закройте и удалите его, чтобы его можно было очистить.

Вы должны обернуть создание соединения в оператор using, так как это даже закроет и удалит соединение при возникновении исключения.

using (OleDbConnection conn = new OleDbConnection(...))
{
    // use the connection inside here
}
person Patrick Hofman    schedule 27.10.2015
comment
Если интерфейс просит вас избавиться от него, всегда делайте это, на мой взгляд. - person Patrick Hofman; 27.10.2015
comment
Спасибо, я ценю ответ и объяснение. - person Joe Cambareri; 27.10.2015

Вы должны использовать блок using, который обеспечит правильное закрытие и удаление соединения.

using (OleDbConnection connection = new OleDbConnection(connectionString))
{
  connection.Open();
  //Do some work
}//The connection is automatically closed when the code exits the using block.

Дальнейшее чтение здесь

person Izzy    schedule 27.10.2015