C # / Informix: нужно ли явно вызывать Close на моем соединении с БД, если оно используется в операторе использования? - PullRequest
1 голос
/ 29 ноября 2010

В основном, если я делаю следующее:

using (IfxConnection connection = ConnectionManager.GetConnection())
{
    connection.Open();
    ...
    if (connection != null) connection.Close(); //Is this necessary?
}

Примечание. IfxConnection - это класс IBM, который наследуется от DBConnection.

Я знаю, что не мешало бы оставить это там, но я нахожусь в точке, где я очищаю и делаю свой код настолько эффективным, насколько это возможно, поэтому было бы неплохо удалить все, что является "лишним". :)

Ответы [ 2 ]

3 голосов
/ 29 ноября 2010

Если IBM выполнит очистку и вызовет Close() в своем классе IfxConnection на Dispose(), тогда можно безопасно удалить последнюю строку.

Согласно документам , да, они делают.

По сути, у вас есть два варианта:

  • идти с using() или
  • потеря using() и переход на try{ ... } finally { if (connectionIsOpen) connection.Close()}

Использование их обоих не требуется.

Я бы проголосовал за использование using(). (каламбур); -)

Только не используйте повторно - опять же ;-) - соединение, которое уже установлено, - но вы бы этого не сделали, в любом случае, не так ли? : -)

1 голос
/ 29 ноября 2010

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

Пожалуйста, посмотрите IfxConnection для этих советов:

  • Вызов утилизации наобъект IfxConnection отличается от вызова Close.Например, Dispose очищает строку подключения, а Close - нет.

  • [В отношении метода Close] Закрывает соединение с базой данных.Это предпочтительный метод закрытия любого открытого соединения.

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