Está en la página 1de 10

Prctica A: invocar procedimientos almacenados con

Microsoft ADO.NET
Logon
Logon Page
Page
Login.aspx
Login.aspx
Benefits
Benefits
Coho Home
Home Page
Page Page
Page Header
Header ASPState
Winery Default.aspx
Default.aspx Header.ascx
Menu
Menu Header.ascx
Registration
Registration Component
Component
Register.aspx
Register.aspx Class1.vb Web.
Class1.vb or
or Class1.cs
Class1.cs tempdb
config

Life
Life Insurance
Insurance Retirement
Retirement Medical
Medical Dental
Dental
Life.aspx
Life.aspx Retirement.aspx
Retirement.aspx Medical.aspx
Medical.aspx Dental.aspx
Dental.aspx

Prospectus Doctors User XML


XML Web
Web
Prospectus Doctors User Control
Lab Web Prospectus.aspx
Prospectus.aspx Doctors.aspx
Doctors.aspx namedate.ascx
namedate.ascx Service
Service
Application dentalService1.asmx
dentalService1.asmx

XML
Doctors Dentists
Files

Objetivos En este laboratorio, aprenderemos a:


Recuperar datos de una base de datos Microsoft SQL Server utilizando
procedimientos almacenados.
Acceder a procedimientos almacenados utilizando objetos SqlCommand y
SqlDataReader.
Vincular un objeto SqlDataReader a un cuadro de lista.

Nota Este laboratorio se centra en los conceptos de este mdulo. Por ello,
podra no cumplir las recomendaciones de seguridad de Microsoft.

Requisitos previos Para trabajar en este laboratorio, es necesario tener:


Conocimientos sobre cmo utilizar los objetos SqlConnection,
SqlDataAdapter, SqlDataReader y SqlCommand de Microsoft
ADO.NET para leer datos de una base de datos SQL Server utilizando
procedimientos almacenados.
Conocimientos sobre cmo crear procedimientos de evento para controles
de servidor.
Conocimientos sobre cmo mostrar datos DataSet y DataReader en un
control enlazado a lista.
Escenario Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios de
este curso, crearemos un sitio Web que permita a los empleados seleccionar y
configurar los beneficios que elijan.
Uno de los beneficios que ofrece el seguro mdico. Cuando se solicita un
seguro mdico, el usuario debe seleccionar un mdico de cuidados primarios.
Los doctores aprobados por la compaa aparecen en una lista de una base de
datos SQL Server denominada doctors. La base de datos tambin incluye las
especialidades de los doctores. En este laboratorio, mejoraremos la pgina
doctors.aspx del sitio Web de Coho Winery para permitir a los usuarios ver la
lista de especialidades de un doctor seleccionado.
Tiempo estimado para
completar el laboratorio:
30 minutos
Ejercicio 0
Configuracin del laboratorio
Para realizar este laboratorio, es necesario haber creado el proyecto de la
aplicacin Web Benefits y el proyecto de la biblioteca de clases BenefitsList.
Estos proyectos pueden haberse creado utilizando Visual Basic .NET o
Microsoft Visual C# .NET.
Si no se han creado estos proyectos, realizar los siguientes pasos:

Crear la solucin LabApplication


Importante Realizar este procedimiento nicamente si no se ha creado un
archivo de solucin LabApplication.

1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco


denominada LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en
blanco.
b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el
cuadro de texto Nombre y hacer clic en Aceptar.

Crear el proyecto Benefits


Importante Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto Benefits t, o si se ha eliminado.

1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado


BenefitsVB o BenefitsCS, en la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET,
establecer la ubicacin en http://localhost/BenefitsVB para el proyecto
Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto
Visual C#.
d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar.

Precaucin Cuando se agregan proyectos a la solucin, es importante el


uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos
algunos formularios Web Forms ya generados en ste y en otros
laboratorios, por ello, debemos verificar que hemos escrito con maysculas
el nombre del proyecto Benefits.
Actualizar el proyecto Benefits
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Buscar los archivos de proyecto:
Para el proyecto Visual Ir a la carpeta VB\Starter\BenefitsVB para los archivos de Visual Basic
Basic .NET .NET.
Para el proyecto Visual Ir a la carpeta CS\Starter\BenefitsCS para los archivos de Visual C#.
C#
Estas carpetas pueden encontrarse dentro del fichero labs09.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.

Crear la biblioteca de clases BenefitsList


Importante Realizar este procedimiento nicamente si no se ha creado
anteriormente un proyecto BenefitsList, o si se ha eliminado el proyecto
BenefitsList siguiendo los pasos del Apndice A, Recuperacin del
laboratorio.

1. Crear un nuevo proyecto de biblioteca de clases


Para el proyecto Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el
Visual Basic .NET nombre BenefitsListVB, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual Basic.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListVB.
d. Hacer clic en Agregar a solucin, y clic en Aceptar.
Para el proyecto Visual Crear un nuevo proyecto de biblioteca de clases Visual C# .NET con el
C# nombre BenefitsListCS, y agregarlo a la solucin LabApplication:
a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto.
b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto,
hacer clic en Proyectos de Visual C#.
c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el
Nombre de BenefitsListCS.
a. Hacer clic en Agregar a solucin, y clic en Aceptar.

Precaucin Verificar que se han escrito correctamente las maysculas del


proyecto BenefitsList.
Actualizar el proyecto BenefitsList
1. En Visual Studio .NET, abrir el archivo de solucin LabApplication.
2. En el Explorador de soluciones, hacer clic con el botn derecho en
BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en
Agregar elemento existente.
3. Ir al proyecto BenefitsList.
Para el proyecto Visual Ir a la carpeta VB\Starter\BenefitsListVB.
Basic .NET

Para el proyecto Visual Ir a la carpeta CS\Starter\BenefitsListCS.


C#
Estas carpetas pueden encontrarse dentro del fichero labs09.zip
4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento
existente BenefitsList, hacer clic en Todos los archivos (*.*).
5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir.
6. Hacer clic en S a la pregunta de sobrescribir o recargar los archivos.

Crear una referencia al componente BenefitsList del proyecto Benefits


1. En el proyecto Benefits de la solucin LabApplication, completar los
siguientes pasos para agregar una referencia al componente BenefitsList
que acabamos de crear:
a. Hacer clic con el botn derecho en el proyecto BenefitsVB o
BenefitsCS en el Explorador de soluciones y hacer clic en Agregar
referencia.
b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos,
hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS.
c. En la lista Componentes seleccionados, seleccionar el componente
BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar.
El componente se agrega a la carpeta Referencias en el Explorador de
soluciones.
Ejercicio 1
Obtener nombres de ciudades nicos
En este ejercicio, vincularemos el cuadro de lista desplegable lstCities de la
pgina doctors.aspx de forma que muestre los nombres de ciudades nicos de la
base de datos doctors. Cuando el usuario seleccione una ciudad, el cdigo
crear una nueva vista de los datos del DataSet y mostrar los datos en el
DataGrid.
El cuadro de lista desplegable lstCities actualmente est vinculado al campo de
ciudad de la tabla doctors utilizando un objeto SqlCommand. Esta vinculacin
hace que se muestren todas las ciudades en el cuadro de lista desplegable. En
este ejercicio, utilizaremos un procedimiento almacenado para seleccionar los
nombres de ciudades nicos de la tabla doctors.
Debido a que el cuadro de lista desplegable lstCities est actualmente
vinculado, debemos eliminar esa vinculacin antes de utilizar el procedimiento
almacenado.

Eliminar el cdigo de vinculacin existente


1. Abrir la pgina doctors.aspx.vb del proyecto BenefitsVB o la pgina
doctors.aspc.cs del proyecto BenefitsCS.
2. En el procedimiento de evento Page_Load, buscar el siguiente cdigo:
Visual Basic .NET 'TODO: Lab10: bind the listbox to city field
'in the doctors
table
Dim cmdCities As New SqlCommand _
("Select city from doctors", SqlConnection1)
Dim drCities As SqlDataReader
SqlConnection1.Open()
drCities = cmdCities.ExecuteReader()
lstCities.DataSource = drCities
lstCities.DataTextField = "city"
lstCities.DataBind()
drCities.Close()
SqlConnection1.Close()

C# //TODO Lab10: bind the listbox to city field


//in the doctors table
SqlCommand cmdCities = new SqlCommand
("Select city from doctors", sqlConnection1);
sqlDataReader drCities;
sqlConnection1.Open();
drCities = cmdCities.ExecuteReader();
lstCities.DataSource = drCities;
lstCities.DataTextField = "City";
lstCities.DataBind();
drCities.Close();
sqlConnection1.Close();

3. Comentar este cdigo seleccionando todas las lneas del cdigo y haciendo
clic en el icono Comentario de la Barra de herramientas.
Vincular el cuadro de lista desplegable utilizando un procedimiento
almacenado
1. Localizar el siguiente comentario:
TODO: Lab11: bind the listbox to the getUniqueCities stored
procedure

2. Crear un nuevo objeto SqlCommand denominado cmdCities que utiliza el


objeto sqlConnection1 para invocar el procedimiento almacenado
getUniqueCities.
3. Establecer el CommandType del objeto cmdCities a Stored Procedure.
4. Abrir el objeto SqlConnection sqlConnection1.
5. Crear un objeto SqlDataReader desde el objeto SqlCommand invocando
el mtodo ExecuteReader del objeto SqlCommand. Poner el nombre
drCities al objeto SqlDataReader.
6. En el cdigo, establecer las propiedades del cuadro de lista desplegable
lstCities como muestra la siguiente tabla.
Propiedad Valor

DataSource drCities
DataTextField "City"

7. Invocar el mtodo DataBind del cuadro de lista desplegable lstCities.


8. Cerrar los objetos DataReader y Connection.
El cdigo debera ser similar al siguiente:
Visual Basic .NET Dim cmdCities As SqlCommand = New _
SqlCommand("getUniqueCities", SqlConnection1)
cmdCities.CommandType = CommandType.StoredProcedure
SqlConnection1.Open()
Dim drCities As SqlDataReader
drCities = cmdCities.ExecuteReader()
lstCities.DataSource = drCities
lstCities.DataTextField = "City"
lstCities.DataBind()
drCities.Close()
SqlConnection1.Close()

C# SqlCommand cmdCities = new SqlCommand


("getUniqueCities", sqlConnection1);
cmdCities.CommandType = CommandType.StoredProcedure;
sqlConnection1.Open();
sqlDataReader drCities;
drCities = cmdCities.ExecuteReader();
lstCities.DataSource = drCities;
lstCities.DataTextField = "City";
lstCities.DataBind();
drCities.Close();
sqlConnection1.Close();

9. Generar y examinar la pgina doctors.aspx.


El cuadro de lista desplegable City muestra la lista de ciudades donde se
encuentran los doctores. No hay ciudades duplicadas en la lista.
Ejercicio 2
Obtener las especialidades de los doctores
En este ejercicio, mostraremos las especialidades de un doctor en un cuadro de
lista. Cuando se selecciona un doctor en el objeto DataGrid dgDoctors, se
invoca el procedimiento almacenado getDoctorSpecialty y se muestra el
resultado en el cuadro de lista lstSpecialties.

Invocar el procedimiento almacenado getDrSpecialty


1. Crear el procedimiento de evento SelectedIndexChanged.
Visual Basic .NET Abrir el cdigo subyacente de la pgina doctors.aspx y crear un
procedimiento de evento SelectedIndexChanged para el control DataGrid:
a. En la pgina de cdigo subyacente, en la lista desplegable Nombre de
clase, hacer clic en dgDoctors.
b. En la lista desplegable Nombre de mtodo, hacer clic en
SelectedIndexChanged.
C# En las propiedades del control dgDoctors DataGrid, hacer clic en Events.
Desplazarse hacia abajo en la lista de eventos y hacer doble clic en el evento
SelectedIndexChanged.
2. Crear una variable de tipo cadena denominada strDrID para guardar el valor
de la columna dr_id para la fila seleccionada por el usuario.
3. Utilizando la coleccin Cells del objeto SelectedItem del DataGrid
dgDoctors, leer el valor del campo dr_id y almacenarlo en la variable
strDrID.
El cdigo debera ser similar al siguiente:
Visual Basic .NET Dim strDrID As String
strDrID = dgDoctors.SelectedItem.Cells.Item(1).Text

C# string strDrID;
strDrID = dgDoctors.SelectedItem.Cells[1].Text;

4. Crear un nuevo objeto SqlCommand denominado cmdSpecialty que utilice


el objeto sqlConnection1 para invocar el procedimiento almacenado
getDrSpecialty.
5. Establecer el tipo de comando SqlCommand a un procedimiento
almacenado.
El cdigo debera ser similar al siguiente:
Visual Basic .NET Dim cmdSpecialty As New _
SqlCommand("getDrSpecialty", SqlConnection1)
cmdSpecialty.CommandType = CommandType.StoredProcedure

C# SqlCommand cmdSpecialty = new


SqlCommand( "getDrSpecialty", sqlConnection1);
cmdSpecialty.CommandType = CommandType.StoredProcedure;

6. Crear un objeto SqlParameter denominado paramSpecialty utilizando el


parmetro que se muestra en la siguiente tabla.
Nombre de parmetro Tipo de datos Tamao

@dr_id SqlDbType.Char 4

7. Establecer la propiedad Direction del SqlParameter a Input.


8. Establecer el valor del SqlParameter a la variable strDrID.
9. Agregar el parmetro al objeto SqlCommand utilizando el mtodo Add.
El cdigo debera ser similar al siguiente:
Visual Basic .NET Dim paramSpecialty As New SqlParameter _
("@dr_id", SqlDbType.Char, 4)
paramSpecialty.Direction = ParameterDirection.Input
paramSpecialty.Value = strDrID
cmdSpecialty.Parameters.Add(paramSpecialty)

C# SqlParameter paramSpecialty = new SqlParameter


("@dr_id", SqlDbType.Char, 4);
paramSpecialty.Direction = ParameterDirection.Input;
paramSpecialty.Value = strDrID;
cmdSpecialty.Parameters.Add(paramSpecialty);

10. Abrir el objeto SqlConnection sqlConnection1.


11. Crear un nuevo objeto SqlDataReader denominado drSpecialty.
12. Rellenar el objeto SqlDataReader desde el objeto SqlCommand
invocando el mtodo ExecuteReader del objeto SqlCommand.
El cdigo debera ser similar al siguiente:
Visual Basic .NET SqlConnection1.Open()
Dim drSpecialty As SqlDataReader
drSpecialty = cmdSpecialty.ExecuteReader()

C# sqlConnection1.Open();
sqlDataReader drSpecialty;
drSpecialty = cmdSpecialty.ExecuteReader();

Vincular el cuadro de lista lstSpecialties al DataReader drSpecialties y


hacer que est visible
1. En el cdigo, establecer las propiedades del cuadro de lista lstSpecialties
como muestra la siguiente tabla.
Propiedad Valor

DataSource drSpecialty
DataTextField "Specialty"

2. Invocar el mtodo DataBind del cuadro de lista.


3. Cerrar los objetos SqlDataReader y SqlConnection.
El cdigo debera ser similar al siguiente:
Visual Basic .NET lstSpecialties.DataSource = drSpecialty
lstSpecialties.DataTextField = "Specialty"
lstSpecialties.DataBind()
drSpecialty.Close()
SqlConnection1.Close()

C# lstSpecialties.DataSource = drSpecialty;
lstSpecialties.DataTextField = "Specialty";
lstSpecialties.DataBind();
drSpecialty.Close();
sqlConnection1.Close();

4. Agregar cdigo para hacer que el cuadro de lista lstSpecialties y la etiqueta


lblSpecialties estn visibles, pero slo si hay especialidades en el
DataReader.
El cdigo debera ser similar al siguiente:
Visual Basic .NET If Not IsDBNull(drSpecialty) Then
lstSpecialties.Visible = True
lblSpecialties.Visible = True
End If

C# if (drSpecialty != null)
{
lstSpecialties.Visible = true;
lblSpecialties.Visible = true;
}

5. Generar y examinar la pgina doctors.aspx:


a. En el explorador, seleccionar un doctor de la lista.
El cuadro de lista Specialties muestra las especialidades del doctor
seleccionado.
b. Escoger una ciudad del cuadro de lista desplegable City y seleccionar un
nuevo doctor.
Es posible que el cuadro de lista Specialties muestre una lista distinta de
especialidades. Si no es as, seleccionar otro doctor para estar seguros de
que el cdigo funciona correctamente.
c. Hacer clic en Submit.
Seremos redireccionados a la pgina medical.aspx, y el nombre del
doctor seleccionado aparece en el cuadro de texto Primary Care
Physician.

También podría gustarte