Proceso de la capa de datos con SQL Server Error



Los desarrolladores se esfuerzan por manejar adecuadamente lo inesperado, de modo que los usuarios no tienen que preocuparse acerca de los mensajes de error celestial-como sistema. Por esta razón, el manejo de excepciones es cada uno. NET en una parte estándar. Bloque Try / Catch le permite capturar las excepciones y la aplicación de control desde el punto de aplicación. Interactuar con la base de datos se produce cuando un montón de errores, pero muchos desarrolladores no saben cómo lidiar con la capa de base de datos de un error. En este artículo vamos a explorar cómo utilizar SQL Server y el código T-SQL para manejar los errores en la base de datos.

Manejo de los errores en T-SQL

de diálogo de SQL Server SQL le permite manejar fácilmente el proceso puede ser almacenado, la función de error no grave ocurrió, pero no todos los errores son más fáciles de manejar. De hecho, los errores fatales y no fatales son muchas. ¿Qué es fatal, lo que no mortal, esto no es muy bien documentado, pero su código de aplicación puede utilizar siempre bloque try / catch para controlar los errores fatales base de datos. Para todos los otros errores, puede utilizar las siguientes técnicas.

Servicios

Usted debe usar el código de transacción en la base de datos para asegurarse de que todo no es un problema cuando todos los cambios han sido completadas. ayudar a SQLServer-line a la tarea de una transacción descrita como una unidad lógica, que consiste en una serie de declaraciones (seleccionar, insertar, actualizar o borrar, etc). Si la transacción no se produjo durante algún error, entonces todos los cambios que la transacción se convertirá en una parte permanente de la base de datos. Si ocurre un error durante este período y no realizar ningún cambio en la base de datos.

Servicios incluidos en la transacción BEGIN y END TRANSACTION medio. ROLLBACK transacción puede cancelar todos los cambios, así que cualquier cambio no se producirá. instrucción COMMIT TRANSACTION se puede utilizar para los cambios permanentes. Ahora, centrémonos en cómo lidiar con los errores de T-SQL en el archivo.

@ @ Error

la función @ @ error para que pueda aplicar el tratamiento de errores de T-SQL. Se devolverá el código de error devuelto por el sistema. Si no hay error se devuelve "0". la función @ @ error de inmediato se debe llamar inmediatamente después de una declaración, porque va a ser después de cada comando T-SQL ser eliminado.

RAISERROR

instrucción RAISERROR le permite generar un mensaje de error personalizado o utilice un formulario en el interior de noticias ha sido sysmessages. Usted puede ver su línea de sintaxis, pero su forma más básica incluye un mensaje (por mensaje personalizado) o ID de mensaje (para las fuentes existentes) y su severidad y el estado. SQLServer no utiliza el estado, tan a la ligera que se le pasa un número. La gravedad que la gravedad del error de 0 a-18 usuarios, mientras que el 19-25 reservado para los administradores.

En la lista A, la muestra de un procedimiento almacenado utilizado para actualizar estas características un ejemplo Neptuno registro de la base:

CREATE sp_UpdateCustomerPhone PROCEDIMIENTO (id @ nvarchar (5), @ nvarchar teléfono (24), @ salida retvalueint) ASBEGINBEGIN TRANSACTIONUPDATE [dbo]. [Clientes] SET [Teléfono] = @ teléfono WHERE ([IdCliente] = @ id) IF (@ @ ERROR 0) - un valor no negativo señales de una transacción errorBEGINROLLBACK - los cambios no se permanentRAISERROR («Los clientes Error de actualización ', 1,1) - levantar un mensaje de error personalizado - mensaje de error personalizados aparece si ejecutar desde consoleSET @ retvalue valor devuelto = -1 - negativa a signalproblemsENDCOMMIT TRANSACCIÓN - hacer los cambios permanentes, por lo que es récord updatedSET retvalue @ = 1 - un valor de retorno positiva signalssuccessRETURNEND

Lista A

Si no hay ningún error, le tomó el número de teléfono que aparece se establece en un valor que se pasa al proceso. Se utiliza un parámetro de valor devuelto, si hay problemas que devuelve un valor negativo, si todas las cosas con la aplicación de ningún problema, devolverá un resultado positivo.

Utilizando los valores almacenados retorno de procedimiento

A través del procedimiento de retorno de valor almacenado, podemos usarla en nuestro código. NET desde hace años. objeto SqlCommand le permite añadir fácilmente un parámetro para el proceso y almacenar el valor devuelto. Los parámetros de la propiedad Direction se utiliza para recibir el valor de llamada a procedimiento almacenado. Tiene dos valores de la propiedad: InputOutput y salida. En nuestro ejemplo, usaremos el valor de salida para recibir del Estado.

Este código es una página ASP.NET simple para la base de datos Northwind se utiliza para transferir a un cliente a una tabla de datos en el nuevo valor. El valor id se almacena en un campo oculto donde puede transmitirse fácilmente a la forma, pero este campo se utiliza para describir el. Introduzca el valor en el campo de texto se utiliza para actualizar la tabla de base de datos en el campo número de teléfono.

Parámetro se agrega al objeto SqlCommand (deben ser exactamente cumplen con los parámetros de procedimiento almacenado). Mando a través del método ExecuteNonQuery del objeto SqlCommand se ejecuta. Una vez ejecutado, el valor devuelto puede ser parámetros para recuperar.

Código comprueba el valor de retorno (-1 indica un problema), y un mensaje se mostrará en un control Label pulg Además, un bloque try / catch se utiliza para capturar la interacción con la base de datos que pueden ocurrir durante la operación de cualquier error fatal. Véase la lista B:

Nuevo número: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI

Lista B

Lista C en el correspondiente código VB.NET:

Nuevo número: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI

Lista C

La base de datos abarca todos los

Se utiliza bloque try / catch para manejar. NET código de la aplicación de la excepción es un proceso simple, pero usted puede controlar la excepción capa de base de datos. T-SQL SQLServer de excepciones de código de manejo de lenguaje para ofrecerle todo lo que necesita.