Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 302

/ вопрос решён /

Приветствую, уважаемые эксперты! Нужна ваша помощь!

Подключаюсь к БД Postgres через ADOConnection
Проблем с добавлением, удалением записей итд нет

НО в процессе работы рвется связь с Базой данных
Как можно отследить это событие?

Спасибо.

neon Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: neon (статус: Посетитель)
Вопрос отправлен: 21 мая 2011, 11:32
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 31 мая 2011, 11:13; участников в обсуждении: 3.
6ruse

6ruse (статус: 1-ый класс), 25 мая 2011, 13:20 [#1]:

каким методом добавляете данные? с чего такая уверенность что рвется соединение?
neon

neon (статус: Посетитель), 26 мая 2011, 06:21 [#2]:

Нет... суть не в записях.
Интересует ситуация например, когда физически сеть пропала.
То есть соединения уже нет, но и ошибки нет.
Ошибка появляется, когда я пытаюсь добавить запись в Таблицу, что собственно очевидно.

Вот и вопрос в том, как отследить событие у AdoConnection, когда пропадает подключение к Базе данных?
Вадим К

Вадим К (статус: Академик), 31 мая 2011, 10:44 [#3]:

могу написать, как это делают в продакш коде.
procedude sendsql(sql:string);
var i,j:integer;
begin
 i := 0;
  while i < 5 do begin
    try
      execsql(sql); // собственно выполнение запроса.
      exit;
    except
      //а вот сюда попадем, если что то не так
      log('не получилось отправить');
      inc(i);
    end;
    j := 0;
    while j > 5 do // сделаем 5 попыток переподлючиться
    try
      // тут правильно вставить sleep(5); - дать 5 секунд паузу, а то если сервер перегружается,
      // можно быстро свои попытки протратить. Но то в этом случае код лучше в поток вынести.
      disconnect_from_server;
      connect_to_server;
      break;
    except
      log('не удалось переподключиться');
      inc(j);
    end;
    exit;
  end;
end;
log - это процедура записи в лог. Названия остальных процедур понятно с названия.

Это схематический код! оригинала на делфи нет, переводил с плюсов.
Галочка "подтверждения прочтения" - вселенское зло.
neon

neon (статус: Посетитель), 31 мая 2011, 11:13 [#4]:

Вадим К спасибо!
сейчас попробую реализовать

31 мая 2011, 11:13: Статус вопроса изменён на решённый (изменил автор вопроса — neon)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 16 ноября 2024, 18:34
Выполнено за 0.03 сек.