Главная страница
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.48 MB
Время: 0.018 c
14-78625
DeMoN-777
2002-10-03 00:48
2002.10.24
Многому ли вас научил форум ?


4-78718
carmen
2002-09-12 01:08
2002.10.24
Как полностью изменить стандартный вид формы


4-78724
lds78
2002-08-05 08:51
2002.10.24
PopUp menu


1-78489
msdn1
2002-10-13 15:04
2002.10.24
Richedit


3-78272
lutikh
2002-10-02 22:23
2002.10.24
Много таблиц (.dbf). Выбрать одну позицию.