Форум: "Базы";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизОбработка исключений БД Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c