Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.30;
Скачать: CL | DM;

Вниз

Корректное отключение (подключение) TIBDatabase   Найти похожие ветки 

 
zorik   (2007-11-08 11:56) [0]

Пишу компонент. Хотелось бы наиболее коррекно сделать процедуры подключения и отключения к базе данных Firebird.

Итак отключение

procedure Disconnect;
begin
 //может имеет смысл сделать через try. не возникнет ли
 // исключение если разрыв случился извне
 if not FIBDatabase.Connected then Exit;  
 //закрить
 try
   FIBDatabase.Close;
 except
   raise Exception.Create("Error on Disconnect");
   //вопрос что делать здесь дальше, если соеденение не закрылось
 end;
end;


Подключение

procedure Connect;
begin
 Disconnect;
 try
   FIBDatabase.Open;
 except
   on E:Exception do
     raise Exception.Create("Error on Connect: " + E.Message);
 end;
end;


Откуда возник такой вопрос? При разрыве связи извне не удавалось нормально продолжить работу переподключением. Вот и хочу все сделать с максимальным количеством проверок.


 
Johnmen ©   (2007-11-08 12:44) [1]


> не удавалось нормально продолжить работу переподключением.

Это о чем?


 
DrPass ©   (2007-11-08 12:44) [2]


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

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


 
Правильный_Вася   (2007-11-08 13:44) [3]

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


 
zorik   (2007-11-08 15:35) [4]


> Правильный_Вася

Наверное ты прав :)


 
DrPass ©   (2007-11-08 15:37) [5]


> какой смысл в переподключении, если все активные на даный
> момент транзакции и датасеты становятся инвалидными

Смысл в том, чтобы не заставлять клиента перезапускать программу, а мягко восстановить все это добро


 
Sergey13 ©   (2007-11-08 15:53) [6]

> [5] DrPass ©   (08.11.07 15:37)

Может еще и кнопки все програмно нажимать, что бы юзер не напрягался? 8-)
Мое ИМХО по этому поводу - подобной заботой о пользователе ты берешь на себя ответственность за чужой сбой (в данном случае за работу сети). Где гарантия, что "мягко" восстанавливая ты восстановишь именно то что нужно?


 
DrPass ©   (2007-11-08 15:59) [7]


>  Где гарантия, что "мягко" восстанавливая ты восстановишь
> именно то что нужно?

Это зависит целиком и полностью от архитектуры приложения. Если я знаю, что могу в той или иной ситуации корректно восстановить работу после обрыва сети - почему бы мне это не сделать? Если не знаю - тогда не буду, естественно.


 
Sergey13 ©   (2007-11-08 16:06) [8]

> [7] DrPass ©   (08.11.07 15:59)

В принципе согласен, но четко знать ситуацию можно только в относительно простом приложении, которое и перезапустить за три-четыре клика можно. Т.е. смысл помощи теряется. А ответственность остается.


 
zorik   (2007-11-08 17:24) [9]

Смысл в том чтоб не выскакивал Exception при последовательном закрытии модальных окон, если их будет несколько. Например: окно1 -> окно2 -> окно3 -> окно4 -> окно5. Хотя может и недоработки в программе были.



Страницы: 1 вся ветка

Текущий архив: 2008.03.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
2-1204743273
timekiller
2008-03-05 21:54
2008.03.30
TDateTimePicker позиция курсора и текст после этой позиции


2-1204190493
Still Swamp
2008-02-28 12:21
2008.03.30
Как использовать TwilightColorMap


15-1202656809
DVM
2008-02-10 18:20
2008.03.30
Поясните насчет клиентских лицензий Windows Server


2-1204026313
Ultimate
2008-02-26 14:45
2008.03.30
Чтение данных системы...


3-1194530578
-=Le][=-
2007-11-08 17:02
2008.03.30
Фильтр для получения списка значений.