08.programación de consultas sql

17
© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados. Lenguaje de Programación .Net Programación de Consultas SQL – ADO.Net

Upload: franco-inostroza-hinojoza

Post on 28-Nov-2015

43 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Lenguaje de Programación .Net

Programación de Consultas SQL – ADO.Net

Page 2: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Procedimientos AlmacenadosDefinición :

• Un procedimiento almacenado es una consulta SQL almacenada en una base de datos de Microsoft SQL Server y no en el código de la aplicación.

• Los procedimientos almacenados son más seguros que el código de consulta y a menudo su ejecución es más rápida.

• El control SqlDataSource, puede recuperar los resultados del procedimiento almacenado y servir como origen de datos del control GridView.

Page 3: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Procedimientos Almacenados (Stored Procedures)

Un procedimiento almacenado es un a consulta en lenguaje T-SQL (hablando de Microsoft SQL Server) que se encuentra almacenada físicamente como un objeto de la base de datos.

La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos

Page 4: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

• Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de entrada y salida de información.

• Los usos típicos para los procedimientos almacenados incluyen la validación de datos siendo integrados a la estructura de base de datos, son mas conocidos como disparadores o triggers.

Page 5: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Sintaxis de Procedimientos almacenados.

Page 6: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Ejemplo

El procedimiento almacenado quedará guardado como un objeto de la basede datos. Si es requerida alguna modificación al código que lo define, se debeutilizar la instrucción ALTER en lugar de CREATE, como se muestra en el siguiente ejemplo:

Page 7: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Procedimientos AlmacenadosUna vez que el procedimiento ha sido creado en la

base de datos, este puede ser accedido como tal mediante las clases de acceso a datos (SqlCommand) desde el código .Net, para ello se debe especificar que el tipo de comando es CommandType.StoredProcedure

Page 8: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Recomendaciones y nomenclaturas

• Es recomendado mantener algún estándar en la definición de los nombres de los procedimientos almacenados.

• La función principal que se les da a los procedimientos, tiene relación con un concepto llamado CRUD que viene de un acrónimo en inglés para indicar: Creación (Create), Lectura (Read), Actualización (Update) y Eliminación (Delete). Por lo tanto la nomenclatura básica a definir debería estar guiada por estas definiciones.

• Para el caso de normar a nivel de los ejemplos y la codificación utilizaremos los siguientes prefijos para nuestros procedimientos:

Page 9: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Recomendaciones y nomenclaturas

Page 10: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Acceso a datos en ASP.NET con Procedimientos• La aplicación desarrollada para conectarse a la base de

datos en la clase anterior se valió de la capacidad que nos provee el control SQLDataSource como fuente de datos y que permite generar los Script SQL, para la recuperación y mantención de información. Estos script auto-generados, fueron utilizados por el control GridView y DropDownList, habilitando las funciones en base a la configuración realizada al SQLDataSource.

• Ahora poseemos procedimientos almacenados que encapsulan en la Base de Datos la lógica de ejecución SQL, con lo cual podemos utilizar estos para poder realizar las funciones, eliminando la dependencia de los script generados en la página ASPX.

Page 11: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Script autogenerados.

Page 12: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Scripts autogeneradosLo interesante del código mostrado, es que

identificamos los nombres de las propiedades donde se carga la sentencia SQL, misma que podemos utilizar para enlazar la fuente de datos a los procedimientos creados para cada caso. Además también se visualiza la definición de los respectivos parámetros asociados a cada comando, estando estos definidos como valores planos rescatados desde el control enlazado o de controles externos que pueden proveer el valor para el parámetro, como es el caso del DropDownList que provee el parámetro para el filtro (Where) del comando de selección.

Page 13: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Control SqlDataSource

Page 14: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Control SqlDataSource

Page 15: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Control SqlDataSource• La interfaz de configuración del SQLDataSource en las Tareas del

control, nos provee una interacción amigable para poder realizar estas configuraciones, pero no se debe perder de vista el hecho que ellas pueden ser asignadas mediante las respectivas propiedades.

• Para ello nos guiamos en el asistente y al momento de indicar la sentencia SQL del comando Select, seleccionamos la opción para dar nosotros la instrucción SQL o procedimiento almacenado, configurando en la ventana siguiente el procedimiento almacenado para cada una de las instrucciones del CRUD.

• Si alguno de los procedimientos requiere algún parámetro especial no posible de identificar, este será solicitado por separado antes de terminar con el asistente.

• Otro aspecto a distinguir entre la configuración por interfaz y por propiedades directas en el código es que las propiedades <acción>Command y <acción>Parameters se presentan en la ventana de propiedades del control como <acción>Query.

Page 16: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Ventajas de usar Procedimientos almacenados• Compilación: La primera vez que se invoca un SP, el motor lo

compila y a partir de ahí, se sigue usando la versión compilada del mismo, hasta que se modifique o se reinicie el servicio de SQL. Esto significa que se tendrá un mejor rendimiento que las consultas directas que usan cadenas con las instrucciones T-SQL, que se compilan cada vez que se invocan.

• Automatización: si tenemos un conjunto de instrucciones T-SQL, las cuales queremos ejecutar de manera ordenada, un SP es la mejor manera de hacerlo.

• Administración: cuando realizamos aplicaciones con un gran numero de líneas de código, y queremos hacer cambios, solo implica modificar un SP y no toda la aplicación, lo que significa solo cambiamos los SP en el servidor y no tenemos que actualizar la aplicación en todos los equipos cliente.

Page 17: 08.Programación de Consultas SQL

© 2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

• Seguridad: una parte importante es que a los usuarios de nuestra aplicación, solo les proporcionamos los permisos para ejecutar los procedimientos almacenados y no el acceso a todos los objetos de la base. Es decir, si en nuestra aplicación encuentran una vulnerabilidad como SLQ Injection no se podrá explotar ejecutando SQL directamente.

• Programabilidad: Los SP admiten el uso de variables y estructuras de control como IF, Bucles, Case, etc. además del manejo de transacción y permite controlar excepciones. Y cuando trabajamos con SP CLR podemos hacer uso de cualquier lenguaje .NET como lo son C# y VB.NET.

• Trafico de Red: Pueden reducir el trafico de la red, debido a que se trabaja sobre el motor (en el servidor), y si una operación incluye hacer un trabajo de lectura primero y en base a eso realizar algunas operaciones, esos datos que se obtienen no viajan por la red.

Ventajas de usar Procedimientos almacenados