Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
7-78684
DenKop
2002-08-16 00:55
2002.10.24
Как определить колличество установленных CDROM ов и их имена?


3-78249
Zmiy
2002-10-02 11:48
2002.10.24
DBLookupCombobox???


14-78599
Сатир
2002-09-23 12:41
2002.10.24
---|Ветка была без названия|---


1-78369
sascha
2002-10-15 07:17
2002.10.24
Поясните код.


1-78329
NewMen
2002-10-14 14:27
2002.10.24
Form->max.




   Наверх