Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
3-78279
TTCustomDelphiMaster
2002-10-02 17:23
2002.10.24
Имя таблицы = 8 символов


3-78258
Gaber
2002-10-02 10:10
2002.10.24
Данные из DBGrid


1-78333
Stream2k
2002-10-14 13:16
2002.10.24
Проблема с ShellExecute


1-78465
Sego
2002-10-12 18:54
2002.10.24
TreeView


1-78325
AL2002
2002-10-11 01:01
2002.10.24
Внимание! Exception.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский