Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разрыв соединения с удаленным сервером 
:(
    Опции темы
Fitc
Дата 16.3.2010, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: нет
Всего: 4



Допустим, я подключился к удаленному SQL Server'у своим клиентским приложением(ADOConnection). Вдруг что то случилось с сервером, либо с моим соединением и связь потерялась. Я хочу послать запрос, но выдается ошибка, потом вдруг связь восстанавливается(сервер заработал соединение восстановилось), я снова посылаю запрос, но он не посылается, выдается ошибка, хотя связь есть. Так вот в чем вопрос: что сделать, чтоб не надо было перезапускать программу, а чтобы при восстановлении связи после разрыва запросы отправлялось и все было в норме?
PM MAIL   Вверх
cemick
Дата 17.3.2010, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 6



Если соединение было разорвано, то вам снова надо его устанавливать сессию в ручную. Что вы подразумеваете под "Соединение восстановилось", какое соединение. 
PM MAIL WWW   Вверх
Fitc
Дата 17.3.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: нет
Всего: 4



Понял, что надо делать: надо после разрыва -  ADOConnention закрыть и снова открыть... тогда все нормально, запросы снова посылаются. 

Цитата(cemick @  17.3.2010,  12:07 Найти цитируемый пост)
Что вы подразумеваете под "Соединение восстановилось", какое соединение.  

ну допустим у меня соединение по сети пропало по каким то причинам и через некоторое время восстановилось или же серверный комп вырубился, включили  - связь восстановилась


Это сообщение отредактировал(а) Fitc - 17.3.2010, 20:25
PM MAIL   Вверх
Fitc
Дата 27.3.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.1.2010

Репутация: нет
Всего: 4



Расскажу о хитростях, которые я применил для решения своей проблемы, т.к. инфы в инете я про это не нашел...
Возникла трудность в определении когда у меня пропадает ссоединение... чтобы применить как я уже описал выше переподключении ADOConnection (закрыть и снова открыть). Также к сожалению я должен был найти способ не переписывания огромного кода, который был собственно написан не мной и добавить туда эту возможность - устойчивости к временным неполадкам соединения...
Итак для начала нужно выставить свойство <b>ADOConnection.KeepConnection в false</b>. Это свойство служит для того, чтобы всегда поддерживать соединение, даже если оно не нужно(тогда нужно поставить его в true) или собственно закрывать соединение, если оно не нужно в данный момент(датасеты к нему не обращаются). После того как мы выставили это свойство в false, то собственно наша задача будет решена, но могут возникать назойливые ошибки, непосредственно после восстановления соединения, которые нам не нужны... связано это с тем, что мы держим открытым датасет даже когда соединение разорвано, это является каким то багом...(само оно не закрывается когда соединение пропадает) следовательно желательно добавить следующие записи при открытии датасета(на примере ADOQuery):
Цитата

ADOQuery.Close;
........................;
try
ADOQuery.Open;
except
ADOQuery.Close;
end;

В среде Delphi будут выдаваться ошибки, а непосредственно при запуске через exe ошибок не будет.
П.С.: Возможно где то накасячил в понимании сути возникновения ошибок... поправьте, если не так)
П.П.С.: Интересны ваши мнения!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1108 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.