![]() |
|
![]() ![]() ![]() |
|
Fitc |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.1.2010 Репутация: нет Всего: 4 |
Допустим, я подключился к удаленному SQL Server'у своим клиентским приложением(ADOConnection). Вдруг что то случилось с сервером, либо с моим соединением и связь потерялась. Я хочу послать запрос, но выдается ошибка, потом вдруг связь восстанавливается(сервер заработал соединение восстановилось), я снова посылаю запрос, но он не посылается, выдается ошибка, хотя связь есть. Так вот в чем вопрос: что сделать, чтоб не надо было перезапускать программу, а чтобы при восстановлении связи после разрыва запросы отправлялось и все было в норме?
|
|||
|
||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 6 |
Если соединение было разорвано, то вам снова надо его устанавливать сессию в ручную. Что вы подразумеваете под "Соединение восстановилось", какое соединение.
|
|||
|
||||
Fitc |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.1.2010 Репутация: нет Всего: 4 |
Понял, что надо делать: надо после разрыва - ADOConnention закрыть и снова открыть... тогда все нормально, запросы снова посылаются.
ну допустим у меня соединение по сети пропало по каким то причинам и через некоторое время восстановилось или же серверный комп вырубился, включили - связь восстановилась Это сообщение отредактировал(а) Fitc - 17.3.2010, 20:25 |
|||
|
||||
Fitc |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.1.2010 Репутация: нет Всего: 4 |
Расскажу о хитростях, которые я применил для решения своей проблемы, т.к. инфы в инете я про это не нашел...
Возникла трудность в определении когда у меня пропадает ссоединение... чтобы применить как я уже описал выше переподключении ADOConnection (закрыть и снова открыть). Также к сожалению я должен был найти способ не переписывания огромного кода, который был собственно написан не мной и добавить туда эту возможность - устойчивости к временным неполадкам соединения... Итак для начала нужно выставить свойство <b>ADOConnection.KeepConnection в false</b>. Это свойство служит для того, чтобы всегда поддерживать соединение, даже если оно не нужно(тогда нужно поставить его в true) или собственно закрывать соединение, если оно не нужно в данный момент(датасеты к нему не обращаются). После того как мы выставили это свойство в false, то собственно наша задача будет решена, но могут возникать назойливые ошибки, непосредственно после восстановления соединения, которые нам не нужны... связано это с тем, что мы держим открытым датасет даже когда соединение разорвано, это является каким то багом...(само оно не закрывается когда соединение пропадает) следовательно желательно добавить следующие записи при открытии датасета(на примере ADOQuery):
В среде Delphi будут выдаваться ошибки, а непосредственно при запуске через exe ошибок не будет. П.С.: Возможно где то накасячил в понимании сути возникновения ошибок... поправьте, если не так) П.П.С.: Интересны ваши мнения! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |