Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection.
Приложение что-то делате с базой.
Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.
Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.
Здравствуйте, Win32nipuh, Вы писали:
W>Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection. W>Приложение что-то делате с базой. W>Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.
W>Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.
W>Как лучше реализовать ?
W>Спасибо!
Это не очень хорошая идея с "голбальным" SqlConnection, поверьте. Гораздо лучше открывать соединение на время запроса или изменения данных и аккуратно закрывать его сразу по окончании запроса. Это общепринятая практика и это особенно актуально для приложения на pocket PC. К тому же в таком режиме работы легко организовать отлов и обработку ошибок, связанных с невозможностью соединения с базой.
Здравствуйте, stump, Вы писали:
S>Здравствуйте, Win32nipuh, Вы писали:
W>>Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection. W>>Приложение что-то делате с базой. W>>Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.
W>>Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.
W>>Как лучше реализовать ?
W>>Спасибо! S>Это не очень хорошая идея с "голбальным" SqlConnection, поверьте. Гораздо лучше открывать соединение на время запроса или изменения данных и аккуратно закрывать его сразу по окончании запроса. Это общепринятая практика и это особенно актуально для приложения на pocket PC. К тому же в таком режиме работы легко организовать отлов и обработку ошибок, связанных с невозможностью соединения с базой.
Что же — это важное замечание.
Т.е. для покет писи в условиях возможного пропадания коннекта лучше каждый раз переоткрывать.
Не будет ли само открытие коннекции "дорогой" операцией по времени, ресурсам и т.д.?
Кстати, может pooling будет задействован?
(да, используется MSSQLServer 2005 на большой машине)
Здравствуйте, Win32nipuh, Вы писали:
W>Здравствуйте, stump, Вы писали:
W>Что же — это важное замечание. W>Т.е. для покет писи в условиях возможного пропадания коннекта лучше каждый раз переоткрывать.
W>Не будет ли само открытие коннекции "дорогой" операцией по времени, ресурсам и т.д.?
Не дудет.
W>Кстати, может pooling будет задействован?
Будет. Специально для этого ничего писать не надо. W>(да, используется MSSQLServer 2005 на большой машине)
Здравствуйте, Win32nipuh, Вы писали:
W>Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection. W>Приложение что-то делате с базой. W>Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.
W>Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.
W>Как лучше реализовать ?
W>Спасибо!
Сам я так не делаю, stump объяснил почему.
Но вообще-то у SqlConnection есть событие StateChange, по нему можно отлавливать изменения в жизненном цикле.
С особенностями работы connection pool-а на PocketPC я не знаком, так что не исключаю, что такой подход может оказаться приемлимым.
P.S. В любом случае, инкапсулируй доступ к connection-у методом (типа getConnection), потом если что всегда будет легко сменить стратегию.