2015-10-27 1 views
0

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

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

Также является ли заявление conn.Close(); достаточным для закрытия соединения?

+1

вы всегда должны закрыть соединение. Если не только уменьшить нагрузку на ваш сервер. И если вы больше не собираетесь его использовать, я бы назвал conn.Dispose как welll. Кстати, когда-либо слышал о «использовании» заявления? –

+1

Да, 'conn.Close();' достаточно, но инструкция 'using' чиста, а также гарантирует закрытие соединения, даже если выбрано исключение. –

+0

Спасибо, я ценю это! –

ответ

4

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

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

using (OleDbConnection conn = new OleDbConnection(...)) 
{ 
    // use the connection inside here 
} 
+1

Почему downvote? –

+0

Если интерфейс запрашивает у вас распоряжение, всегда делайте это, на мой взгляд. –

+0

Спасибо, я ценю ответ и объяснение. –

5

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

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

Дальнейшее чтение here

 Смежные вопросы

  • Нет связанных вопросов^_^