2009-03-09 4 views
8

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

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

+0

Это действительно хороший вопрос. –

+0

@Robert - Это действительно так! –

ответ

5

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

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

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