Текущий архив: 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