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

Вниз

Перехват ошибки от MSSQL Express 2005 (dbExpress)   Найти похожие ветки 

 
boristt   (2007-04-07 15:45) [0]

Ув. господа, подскажите как можно узнать код ошибки полученного от сервера SQL.
Для подкоючения исп. dbExpress.

После выполнения команды SQLConnection.ExecuteDirect(.....) например при вставке в табл. записи и при этом происх. дублировании перв. ключа, тогда появляется сообщ. об ошибке:

SQL State: 01000, SQL Error Code: 3621
SQL State: 23000, SQL Error Code: 2627

SQLConnection.ExecuteDirect возвращает 1, но это не то что надо.

Пока удалось поймать только сообщение-строку (написана выше) через перехват события Application.OnException

И в этой строке уже искать код ошибки (исполльзуя pos и т.п.). Неправильно как-то это.
Какой правильный способ есть? Подскажите лз, если таковой есть конечно.


 
boristt   (2007-04-09 19:38) [1]

Неужели нет способа? :\


 
Desdechado ©   (2007-04-10 11:39) [2]

А что ты хочешь на основании этого кода ошибки сделать?


 
boristt   (2007-04-10 20:28) [3]

Вывести конечному пользователю сообщение на русском. Что мол незя добавлять такую запись, ибо есть уже такая, например.

Т.е. ошибка 2627 - значит что происходит попытка дублирования перв. ключа. вот на основании её и делать обработчик.


 
boristt   (2007-04-10 20:32) [4]

Можно конечно делать проверку перед вставкой данных, но хотел обойтись без этого. Используя только ограничения созданные в базе.


 
boristt   (2007-04-10 20:41) [5]

Разобрался.
Сделать ещё один запрос к БД

SELECT @@ERROR

Тему можно закрывать.


 
sniknik ©   (2007-04-10 20:48) [6]

> Вывести конечному пользователю сообщение на русском.
как показывает практика "конечный" пользователь не читает сообщений об ошибках вообще..., а те редкие, компьютерно грамотные, что читают, те и на английском не брезгуют... и даже наоборот расстраиваются когда вместо оригинала им суют кривой перевод (я например всегда за оригинал, уж больно много проблем встречал, от аналогичных твоим "благий намерений", и именно ПРОБЛЕМ, которые если бы была нормальная ошибка были бы так мелким недоразумением).


 
Jan1   (2007-04-11 09:54) [7]


> SELECT @@ERROR

Читал:

Because @@ERROR gets a new value when every Transact-SQL statement completes, process @@ERROR in one of two ways:

Test or use @@ERROR immediately after the Transact-SQL statement.

Save @@ERROR in an integer variable immediately after the Transact-SQL statement completes. The value of the variable can be used later.



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

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

Наверх




Память: 0.46 MB
Время: 0.031 c
15-1181381873
ZeroDivide
2007-06-09 13:37
2007.07.08
COM-порт на новом железе


15-1181293492
REA
2007-06-08 13:04
2007.07.08
type string


6-1159720721
_Anwy_
2006-10-01 20:38
2007.07.08
Авторизация на сайте с помощью IdHTTP


15-1180475224
No_Dead
2007-05-30 01:47
2007.07.08
Криптосистемы теряют стойкость


15-1181392665
Ломброзо
2007-06-09 16:37
2007.07.08
Помирает тачпад





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский