Лучший способ проверить состояние OleDbConnection - PullRequest
9 голосов
/ 09 марта 2009

Очевидно ( MSDN ) иногда OleDbConnection.ResetState () ничего не делает, поэтому, даже если соединение не удается, OleDbConnection.State все равно будет иметь значение Open. Я ищу лучший обходной путь для этого, чтобы при проверке состояния соединения я мог избежать появления исключений (если соединение не было сбоя между последней проверкой и попыткой использования).

Нет ничего лучше, чем посылать «бесполезные» операторы SQL каждый раз, чтобы посмотреть, было ли выброшено исключение? Как вы убедитесь, что ваше соединение открыто, прежде чем вы на самом деле его используете?

1 Ответ

5 голосов
/ 09 марта 2009

В вашем случае я бы сделал следующее:

  1. Не беспокойтесь, если соединение действительно «открыто» ДО ТОГО, как его использовать: в любом случае это будет большая часть времени, и вы сэкономите много бесполезных обращений к серверу.
  2. НО проверять любые исключения каждый раз, когда вы используете соединение (создайте вспомогательные методы, чтобы избежать копирования / вставки здесь)
  3. Если у вас есть исключение, отправьте свое «бесполезное» заявление, чтобы проверить «реальное» состояние соединения с базой данных. Я бы сделал это, потому что тип исключений, которые вы можете получить, когда соединение с сервером потеряно, может иногда вызывать удивление (в зависимости от того, что происходит в момент разрыва соединения)

Надеюсь, это поможет.

...