Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ¿Qué tan similares son los mensajes de error entre distintos servidores SQL? (https://www.clubdelphi.com/foros/showthread.php?t=43924)

Al González 24-05-2007 01:51:37

¿Qué tan similares son los mensajes de error entre distintos servidores SQL?
 
¡Hola a todos!

Desde que trabajo con tres capas (en realidad todavía 2.5) trato de hacer las cosas de manera que el código esté lo menos "atado" posible a un solo tipo de base de datos, puesto que de un momento a otro el cliente puede solicitar cambiar de manejador de base de datos (entre otras razones).

Por ello es que vengo creando algunas plantillas y clases de objetos que me permiten "transparentar" el manejo de diversos aspectos de un servidor de base de datos.

En este momento tengo la inquietud de saber qué tan consistentes o similares son los mensajes de error que emiten servidores SQL como Firebird, Oracle, My SQL, SQL Server, DB2, Informix, PostgreSQL, etc.

Por ejemplo, estos son típicos mensajes de error en InterBase / Firebird:

Campo obligatorio; su nombre aparece en el mensaje, pero no el nombre de la tabla a la que pertenece:

SQL Server Error: validation error for column NOMBRE, value "*** null ***"

Valor duplicado en índice único; el nombre del índice aparece en el mensaje:

SQL Server Error: attempt to store duplicate value (visible to active transactions) in unique index "IXDEPARTAMENTOSNOMBRE"

Violación de llave foránea (cuando el ID que intentas asignar ya no existe o cuando no puedes eliminar un registro porque tiene referencias); aparece el nombre de la llave foránea en el mensaje, además de la tabla a la que pertenece esa llave:

SQL Server Error: violation of FOREIGN KEY constraint "FKDEPARTAMENTOSIDEMPLEADOSR" on table "DEPARTAMENTOS"

Les pido de la manera más amable que me proporcionen algunos ejemplos de esos mismos típicos mensajes de error, pero de otros manejadores de bases de datos. Voy a diseñar algunos métodos de mis clases en función de los patrones comunes que vea en dichos mensajes.

Muchas gracias.

Al González. :)

ContraVeneno 24-05-2007 02:02:02

Me da la impresión de que hay que ver en lugar del "mensaje", es el código de error que te generan.

Y es que estoy pensando que la manera de ver esto, es atraves de la captura de excepciones (try...except). Con lo que veo aquí otro problema, ya que dependiendo de los componentes que estes utilizando, será el número de error que te regresen, es decir, el mensaje puede ser el mismo: "Violación de llave duplicada", con lo que si estoy utilizando componentes ADO, el número de error para ese mensaje es el 321 (por ejemplo), pero si estoy utilizando componentes SQLDirect, el número de error para el mismo mensaje es 621.

En fin, a mi me parece que es mejor ver el código que generan en lugar de el mensaje.

Saludos.


La franja horaria es GMT +2. Ahora son las 18:48:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi