Главная страница
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.48 MB
Время: 0.021 c
1-1176448648
Berzercer
2007-04-13 11:17
2007.07.08
Зашита папки паролем


15-1181377892
matt
2007-06-09 12:31
2007.07.08
Приблуда для дельфи


2-1180797638
Core Thousand
2007-06-02 19:20
2007.07.08
wm_geticon


15-1180703116
Настя
2007-06-01 17:05
2007.07.08
Помощь нужна


2-1181635732
Oleg23
2007-06-12 12:08
2007.07.08
запросы на SQL