Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ÍNDICE
Descripción 1
Lección: descripción de los procedimientos almacenados 2
Lección: invocar procedimientos almacenados 9
Invocar procedimientos almacenados con Microsoft ADO.NET 1
Descripción
*****************************
*****************************
Introducción Una alternativa al acceso directo a bases de datos desde nuestra aplicación Web
es invocar un procedimiento almacenado que accederá a la base de datos por
nosotros. El uso de procedimientos almacenados tiene varias ventajas respecto
al acceso directo a bases de datos, incluyendo la eficacia, seguridad y la
protección de la base de datos.
En esta lección, aprenderemos qué es un procedimiento almacenado y los
motivos para invocar procedimientos almacenados cuando se accede a una base
de datos.
Objetivos de la lección En esta lección, aprenderemos a:
Describir qué es un procedimiento almacenado.
Explicar los motivos para utilizar procedimientos almacenados para acceder
y manipular bases de datos.
Invocar procedimientos almacenados con Microsoft ADO.NET 3
*****************************
Programación modular
Distribución del trabajo
Seguridad de la base de datos
Ejecución más rápida
Reduce el tráfico de red
Proporciona flexibilidad
*****************************
Introducción Es más fácil, más eficaz y más seguro utilizar un procedimiento almacenado
que escribir el código requerido para conectarnos directamente a una base de
datos y ejecutar nuestras propias instrucciones Transact-SQL. Invocar un
procedimiento almacenado no requiere que entendamos cómo está diseñada la
base de datos, y sólo se accede a la base de datos mediante un procedimiento ya
probado.
Programación modular Los procedimientos almacenados son ejemplos clásicos de programación
modular. Creamos el procedimiento una vez, lo probamos una vez, lo
almacenamos en el servidor de la base de datos, y lo invocamos varias veces
desde múltiples aplicaciones. Las actualizaciones o cambios a la base de datos
permanecen ocultas para todas las aplicaciones que acceden mediante el
procedimiento almacenado.
Distribución del trabajo Un desarrollador especialista en la programación de bases de datos puede crear
los procedimientos almacenados, mientras que otros desarrolladores pueden
crear paralelamente las aplicaciones Web que utilizarán el procedimiento
almacenado. Esta distribución del trabajo permite que cada desarrollador se
concentre en su propia especialidad, y cumpla con sus propios plazos.
Incremento de la El uso de procedimientos almacenados proporciona una mayor seguridad para
seguridad de la base de una base de datos al limitar el acceso directo. Únicamente acceden directamente
datos a la base de datos los procedimientos almacenados probados que han sido
desarrollados por el propietario de la base de datos. Debido a que las demás
aplicaciones Web y otros desarrolladores no acceden directamente a la base de
datos, el riesgo de daño accidental de la estructura o el contenido de la base de
datos es mínimo.
Utilizar instrucciones SQL o Transact-SQL directamente en el código
Microsoft ASP.NET también supone un riesgo para la seguridad ya que las
instrucciones pueden dar información a un hacker sobre la base de datos y su
estructura. Además, con el acceso directo a una base de datos, también tenemos
el problema de seguridad al intentar determinar qué clase de permisos
deberíamos dar a la cuenta de usuario Web sobre las tablas individuales.
6 Invocar procedimientos almacenados con Microsoft ADO.NET
Ejecución más rápida Si un procedimiento requiere una gran cantidad de código Transact-SQL o si se
invoca repetidamente, el uso de procedimientos almacenados puede dar lugar a
una mayor rapidez de ejecución que acceder directamente a la base de datos con
código Transact-SQL. Los procedimientos almacenados son parseados y
optimizados cuando se crean, y puede utilizarse una versión en memoria del
procedimiento tras su primera ejecución.
El acceso directo mediante instrucciones Transact-SQL requiere que las
instrucciones sean enviadas desde el cliente cada vez que se ejecutan. Las
instrucciones son compiladas y optimizadas cada vez que son ejecutadas por el
servidor de la base de datos.
Reducción del tráfico de En ocasiones, una operación que requiere cientos de líneas de código Transact-
red SQL puede realizarse mediante una única instrucción que invoque un
procedimiento almacenado. Enviar una llamada a través de la red, en lugar de
cientos de líneas de código, reduce el tráfico de red.
Proporciona flexibilidad Si el acceso a la base de datos se realiza a través de procedimientos
almacenados, el desarrollador de la base de datos puede cambiar la estructura
de la base de datos sin romper las aplicaciones Web que los utilizan. Esta
protección permite la continua mejora de la base de datos sin poner en riesgo el
resto del sistema.
Invocar procedimientos almacenados con Microsoft ADO.NET 7
Los estudiantes:
z Decidirán, en determinados escenarios,
qué tipo de procedimiento almacenado
debe utilizarse
Tiempo: 5 Minutos
*****************************
____________________________________________________________
____________________________________________________________
Debemos cambiar todos los prefijos telefónicos 425 de Estados Unidos por
el prefijo 415.
____________________________________________________________
____________________________________________________________
8 Invocar procedimientos almacenados con Microsoft ADO.NET
_____________________________________________________________
Debemos eliminar todos los elementos que se han dejado de fabricar de una
determinada categoría.
_____________________________________________________________
_____________________________________________________________
Invocar procedimientos almacenados con Microsoft ADO.NET 9
*****************************
C# daCategory.Fill(ds, "Categories");
*****************************
Ë Ejecutar la demostración
1. Abrir la página SPGetRecords.aspx del proyecto Demo09VB o Demo09CS
que se pueden encontrar dentro del fichero demos9.zip.
2. Generar y examinar la página.
El DataGrid está vinculado al procedimiento almacenado Ten Most
Expensive Products de la base de datos Northwind Traders.
3. En Visual Studio .NET, visualizar la página de código subyacente de la
página SPGetRecords.aspx.
4. En el procedimiento de evento Page_Load, mostrar el código que realiza lo
siguiente:
• Crea el objeto SqlConnection.
• Crea los objetos SqlDataAdapter y SqlCommand.
• Establece las propiedades del objeto SqlCommand para invocar el
procedimiento almacenado.
• Crea un nuevo DataSet y lo rellena desde el DataAdapter.
14 Invocar procedimientos almacenados con Microsoft ADO.NET
Los estudiantes:
z Arrastrarán un procedimiento almacenado
desde el Explorador de servidores a un
formulario Web Form ASP.NET
z Crearán un objeto DataReader para leer
los datos del procedimiento almacenado
z Vincularán un DataGrid al DataReader
Tiempo: 15 minutos
*****************************
Ë Ejecutar la práctica
1. Crear un nuevo proyecto de aplicación Web y establecer su ubicación en
Visual Basic .NET http://localhost/Pract09VB
C# http://localhost/Pract09CS
2. Abrir la página WebForm1.aspx.
3. Abrir el Explorador de servidores y expandir las siguientes carpetas:
nombre_máquina, Servidores SQL Server, nombre_máquina, Northwind y
Procedimientos almacenados.
4. Hacer clic en el procedimiento almacenado Ten Most Expensive Products
y arrastrarlo a la página WebForm1.aspx.
Visual Studio .NET crea automáticamente un objeto SqlConnection
denominado sqlConnection1 y un objeto SqlCommand denominado
sqlCommand1.
5. Utilizando el Cuadro de herramientas, ubicar un control DataGrid en la
página WebForm1.aspx.
Invocar procedimientos almacenados con Microsoft ADO.NET 15
C# SqlDataReader dr;
sqlConnection1.Open();
dr = sqlCommand1.ExecuteReader();
DataGrid1.DataSource = dr;
DataGrid1.DataBind();
dr.Close();
sqlConnection1.Close();
Utilizar parámetros
*****************************
Nota Cuando utilizamos parámetros en una base de datos OLE DB, el orden de
los parámetros en la colección Parámetros debe coincidir con el orden de los
parámetros definidos en el procedimiento almacenado.
Códigos de ejemplo
*****************************
Ejecutar un Una vez creado el objeto Command, utilizamos el método Fill para ejecutar el
procedimiento procedimiento almacenado y recuperar los registros:
almacenado
C# ds = new DataSet();
daSales.Fill(ds, "Products");
Invocar procedimientos almacenados con Microsoft ADO.NET 19
Leer losda.parameters("@ItemCount").Value
iTotal parámetros de salida
iTotal == da.parameters("@ItemCount").Value
iTotal
iTotal == da.parameters("@ItemCount").Value;
da.parameters("@ItemCount").Value;
*****************************
C# conn.Open();
myCmd.ExecuteNonQuery();
conn.Close();
C# curSales = myCmd.Parameters["@ItemCount"].Value;
Invocar procedimientos almacenados con Microsoft ADO.NET 21
*****************************