|
|
|
Anden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 5.3.2007 Репутация: нет Всего: нет |
Здравствуйте Всем!!! Возникла следующая проблема: в определенный момент времени приложение работающее с базой microsoft sql server теряет связь кратковременно и выходят ошибки бесконца пока не перезапустишь приложение. Вопрос: Как можно проконтролировать состояние соединения чтобы можно было предупредить появление данной ошибки????
Заранее Всем очень благодарен!!!! |
|||
|
||||
mrbrooks |
|
|||
трололомен Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
если используете ADO изучите события ADOConnection
|
|||
|
||||
Anden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 5.3.2007 Репутация: нет Всего: нет |
ну вродь изучал но чего то не нашел как проверить состояние соединения, т.е. есть связь с сервером или ее нету. Сетка WI-FI с направленой антеной на 12 км.ьСервак ноходиться в 5 км от клиентского компа. |
|||
|
||||
Anden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 5.3.2007 Репутация: нет Всего: нет |
блин никто мне помочь не может чтоли???? замучался уже
|
|||
|
||||
t4aynik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Как спросили, так и ответ получили. вы ж ничего не написали, как у вас что реализовано.... Ошибки вылазят в цикле, знацца какойто цикл крутится пока какаято функция не получит/отправит данные, причем ошибки этой функции не обрабатываются. Вот вам и надо найти этот цикл и функцию получения/отправки данных, и сделать там что-нибудь. Если нет функций проверки, так может можно ее в ексцепшен запихнуть? а в кетче сделать ну например реконнект, или сделать признак для дальнейшего реконнекта после выхода из ексцепшна. а сетка не важно какая вайфай или диалап, вы ж не на канальном уровне работаете...
|
|||
|
||||
_Dimon_ |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
Не обязательно в цикле. Дело в том что у меня в проге тоже такая муть, хотя я использую другой сервер бд (ADS), при дисконекте куча ошибок мол открыта такая-то таблица. У меня есть событие OnDisconnect. Неважно что я там напишу, всеравно вылазят эти ошибки. Это наверно черз то что открытые датасеты и датасорсы. При дискоконнекте прога как-бы подвисает - а потом эти гребаные сообщения. Это сообщение отредактировал(а) _Dimon_ - 5.7.2010, 19:17 |
|||
|
||||
t4aynik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Так а через что вы коннектитесь? ОДБЦ?
|
|||
|
||||
A5uKa |
|
||||
TЋ♥s F1rȜ iƧ BurȠiƞg Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
у меня была идея их пинговать
|
||||
|
|||||
t4aynik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Я с инди не занимался. Это что за пинг, собственно передача ICMP пакетов или передача тестовых пакетов по рабочему соединению?
|
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
Понятия не имею |
|||
|
||||
t4aynik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Ну и что вы после этого хотите тогда?
|
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
ну пинг то работает ) |
|||
|
||||
Anden |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 5.3.2007 Репутация: нет Всего: нет |
ADOConnect с базой через ADOQuery Добавлено через 1 минуту и 38 секунд
вопрос в том что если связь один раз разорвалась на секунду то она больше не востановиться до перезапуска приложения а только будут безсконца выходить ошибки об отсуствие сервака с таким именем |
||||
|
|||||
chaos |
|
|||
Серийный программист Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 1 Всего: 44 |
||||
|
||||
t4aynik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
вот все ваши обращения к базе данных запихнуть в try{}, а в catch(){} нужно чтото сделать, что думайте сами, смотря как у вас там сделано. Не знаю как в АДО сделать разрыв сессии, может вам просто ->Close() поможет. В простом ODBC можно сделать Query->DBSession->Close(), это разрывает текущуюю сессию с базой (Query->Close() этого не делает), что позволяет в дальнейшем сделать заново соединение с базой без перезапуска программы. Может еще есть способы, меня устраивает этот. По идее вам нужно найти аналогичный способ. |
|||
|
||||
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |