personalizacion de errores SQL en ASP

17/02/2006 - 22:46 por Fabio Enrique Bolívar M | Informe spam
Hola amigos del foro

Hay alguna manera de capturar errores que devuelve MSSQL y "maquillarlos"
para que el usuario normal lo entienda?

Es decir, si sale este error porque estoy metiendo datos no validos

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]INSERT statement conflicted
with COLUMN FOREIGN KEY constraint 'fk_tadministrador3'. The conflict
occurred in database 'mundo', table 'TADMINISTRADOR', column
'idtadministrador'

entonces "maquillarlo" y ponerlo

"Usted está tratando de ingresar un tipo de administrador que no existe".

Me imagino es capturando algún numero de error con "Err.Number", pero este
siempre me saca el mismo número de error, asi sea por causas diferentes.

Lo usaría también cuando voy a borrar datos, y que sea la BD la encargada de
verificar si ese dato se está usando en otra parte (borrar en cascada) y me
parece redundante verificar eso en código de asp, siendo que en la BD ya
está definido el constreint.

Si estoy errado sobre la "filosofía" del manejo de errores, por favor me
inican y yo miro de la nueva forma que ustedes crean más conveniente.

Muchas gracias de antemano.

***Fabio Bolívar***
 

Leer las respuestas

#1 Miguel Gonzalez
19/02/2006 - 20:02 | Informe spam
Hola Fabio.

Hasta donde sé, tienes que capturar el error mediante "On Error" e identificarlo con "Err.Number".

Luego, mediante un "Select" sobre dicho número, podrás escoger el mensaje a presentar al usuario.

Sobre los números de error de SQLServer la "master database" tiene una tabla de sistema
("sysmessages") que contiene todos los códigos de error. Los errores específicos de ADO, por su
parte, puedes consultarlos en:

http://msdn.microsoft.com/library/d...ueenum.asp

De todas formas, creo que es mejor prevenir y evitar los errores validando los datos antes de
enviarlos al servidor de bases de datos (por cuestiones de eso que llaman "performance").

En proceso de desarrollo es muy interesante disponer de la mayor información posible sobre los
errores, aunque soy de la opinión que, una vez la aplicación está activa, la información del error
enviada al usuario debe ser lo más genérica (¿neutra?) posible, dando el menor número de pistas: una
estrategia clásica del "hacking" consiste en provocar errores en las aplicaciones para a partir de
la información de error averiguar datos sobre su funcionamiento interno (en el caso de las bases de
datos: estructura, tablas, nombres de campos, relaciones, etc.)

Saludos!
Miguel


Fabio Enrique Bolívar M escribió:
Hola amigos del foro

Hay alguna manera de capturar errores que devuelve MSSQL y "maquillarlos"
para que el usuario normal lo entienda?

Es decir, si sale este error porque estoy metiendo datos no validos

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]INSERT statement conflicted
with COLUMN FOREIGN KEY constraint 'fk_tadministrador3'. The conflict
occurred in database 'mundo', table 'TADMINISTRADOR', column
'idtadministrador'

entonces "maquillarlo" y ponerlo

"Usted está tratando de ingresar un tipo de administrador que no existe".

Me imagino es capturando algún numero de error con "Err.Number", pero este
siempre me saca el mismo número de error, asi sea por causas diferentes.

Lo usaría también cuando voy a borrar datos, y que sea la BD la encargada de
verificar si ese dato se está usando en otra parte (borrar en cascada) y me
parece redundante verificar eso en código de asp, siendo que en la BD ya
está definido el constreint.

Si estoy errado sobre la "filosofía" del manejo de errores, por favor me
inican y yo miro de la nueva forma que ustedes crean más conveniente.

Muchas gracias de antemano.

***Fabio Bolívar***





Preguntas similares