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

Вниз

Обработка исключений БД   Найти похожие ветки 

 
Faun ©   (2002-10-03 14:03) [0]

Уважаемые мастера! Кто-нибудь может подкинуть примерчики или ссылки с обработкой исключений при обращении к БД. Прежде всего интересуют ошибки с временной недоступностью сервера (например при прошлом запросе связь была, при новом нет, при следующем возможно опять появится :) ). Интересуют кода ошибок. Использую BDE(через ODBC) и MSSQL. Заранее спасибо.


 
passm ©   (2002-10-03 14:42) [1]

Ловишь текст сообщения из Exception.Message, делаешь небольшой синтаксический анализ и выводишь нормальное сообщение. Опыта работы с MSSQL нет (DB2), но по тексту сообщения можно определить источник ошибки (триггер, уникальное поле...) затем обращаемся к заранее приготовленным таблицам и запрашиваем нормальное сообщение для пользователь.
А в случае потери связм с сервером вариант только один - "Lost communication with SQL Server...".
Но это ИМХО. Есть другие мнения - будет интересно.


 
Faun ©   (2002-10-04 10:36) [2]

Более узкий вопрос. Делаю так:
Устанавливаю соединение с сервером, после этого обрубаю сервер. Очередной запрос к серверу приводит к ошибке о недоступности сервера. Восстанавливаю сервер. Все последующие запросы приводят к "Communication link failure". При этом TDataBase.Connected всегда остается true. Как избежать кратковременной потери связи с сервером, что и где проверять, как восстановить при возникновении данной проблемы?


 
Faun ©   (2002-10-04 12:04) [3]

Складывается впечатление, что это никого, кроме passm © конечно, не интересовало.


 
passm ©   (2002-10-04 13:13) [4]

Faun © (04.10.02 10:36)> К сожалению в случае временного разрыва связи с сервером БД дальнейшую нормальную работу продолжить сложно. Т. е. не отправленные на сервер изменения будут утеряны (можно, разумеется провести работу по их сохранению в неком дополнительном cache с последующим восстановлением, но это в общем случае трудно реализуемо - ИМХО).
Как выход - отлавливать Application.OnException и в случае потери связи закрывать все наборы данных, заново соединяться с сервером а далее ваша фантазия :).
Все это, разумеется, относится к типу соединения: Клиент БД - Сервер БД. (При работе с сервером приложений, ИМХО будет иначе. См. TClientDataSet.SaveToFile).



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

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

Наверх




Память: 0.47 MB
Время: 0.023 c
14-78605
край
2002-10-01 21:19
2002.10.24
О жизни и смерти


3-78271
RDA
2002-10-02 11:44
2002.10.24
Штатное расписание


3-78311
Sayan
2002-10-04 08:55
2002.10.24
Нафигатор по базе


1-78494
AndrX.
2002-10-13 17:06
2002.10.24
Вывод сообщения по времени указанному в...


3-78229
ДенМат
2002-10-01 14:05
2002.10.24
Да как же, блин, делать обновления..