Вопрос

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

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

Это было полезно?

Решение

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

<Ол>
  • Не беспокойтесь о том, действительно ли соединение "действительно" откройте ДО того, как использовать его: в любом случае это будет большая часть времени, и вы сэкономите много бесполезных обращений к серверу
  • НО проверяйте любое исключение каждый раз, когда вы используете соединение (создайте вспомогательные методы, чтобы избежать копирования / вставки здесь)
  • Если у вас есть исключение, отправьте " бесполезный " оператор для проверки соединения с базой данных "реальный" государство. Я бы сделал это, потому что тип исключений, которые вы можете получить, когда соединение с сервером потеряно, может иногда вызывать удивление (в зависимости от того, что происходит в момент разрыва соединения)
  • Надеюсь, это поможет.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top