Está en la página 1de 12

Práctica B: acceso a datos utilizando ADO.

NET

Objetivos En este laboratorio, utilizaremos los conocimientos adquiridos para:


„ Agregar y configurar objetos ADO.NET utilizando el Diseñador de
componentes.
„ Configurar adaptadores de datos utilizando el Asistente para la
configuración de Adaptadores de Datos.
„ Generar datasets tipados.
„ Poblar un dataset desde datos de una base de datos.
„ Crear relaciones entre tablas de un dataset.
„ Actualizar los datos a una fuente de datos utilizando datasets tipados.
„ Enlazar datos a controles.
„ Formatear los datos enlazados a controles.
Requisitos previos Para poder trabajar en este laboratorio, debemos tener:
„ Conocimientos para desarrollar una sencilla aplicación Windows Forms
utilizando un lenguaje de programación compatible con Microsoft Visual
Studio® .NET.
„ Conocimientos para utilizar el Asistente para la configuración del adaptador
de datos del IDE de Visual Studio .NET.
„ Conocimientos para acceder y actualizar una base de datos desde una
aplicación basada en Visual Studio .NET.
„ Conocimientos para crear relaciones entre tablas de un dataset en una
aplicación basada en Visual Studio .NET.
„ Conocimientos para enlazar datos a controles en una aplicación basada en
Visual Studio .NET.
„ Conocimientos para formatear datos enlazados a controles en una aplicación
basada en Visual Studio .NET.

Escenario Usted es un desarrollador de aplicaciones de una compañía comercial llamada


Northwind Traders. El departamento en el que trabaja está desarrollando una
aplicación de órdenes de compra que utilizará la fuerza de ventas de Northwind
Traders. Usted es el responsable de completar el código de acceso a datos que
utilizará objetos ADO.NET para acceder a la base de datos Northwind. La
mayor parte del código ha sido escrito por otros compañeros, y usted es el
responsable de crear el código que poblará y actualizará las tablas Order y
Order Details. Usted también es responsable de escribir el código de enlace a
datos en el control OrderItemControl.
Las tablas Order y Order Details tienen una relación de uno a muchos. Para
escribir el código que puebla y actualiza estas tablas, debemos entender la
relación entre las tablas y los campos relacionados. La siguiente ilustración
representa las relaciones y campos de las tablas Order y Order Details.

Tiempo estimado para


realizar este laboratorio:
75 minutos
Ejercicio 1
Generar y poblar DataSets
En este ejercicio, crearemos un SQLDataAdapter utilizando el Asistente para la configuración del
adaptador de datos y poblaremos un dataset con datos de una base de datos en tiempo de ejecución.
Utilizaremos el Diseñador de componentes para agregar y configurar objetos ADO.NET. Podemos
utilizar el Diseñador de componentes para agregar subcomponentes a una clase, configurarlos y
codificar sus eventos.

Escenario
Empezaremos a construir las características de acceso a datos en la aplicación de órdenes de
compra. El equipo de desarrollo ha generado parte de un código de acceso a datos preliminar que
debemos completar. Nuestra responsabilidad es crear un DataAdapter que pueda acceder y
actualizar la tabla Order de la base de datos de Northwind.
La aplicación utiliza información sobre los empleados para cargar y crear entradas de pedidos. Cada
pedido se asocia a un único empleado. La tabla Orders incluye una columna EmployeeID que se
vincula a la columna EmployeeID de la tabla Employees. El DataAdapter que creemos utilizará el
valor de la variable employeeID para determinar qué filas devolver. Decidimos utilizar el Asistente
para la configuración del adaptador de datos para configurar el comando SELECT del
DataAdapter y permitir que genere el comando Actualizar.
Existen archivos de inicio y de solución asociados a este ejercicio. Encontrará los archivos de inicio
en la carpeta PracticaB\Ex01\Starter, y los archivos de solución en la carpeta
PracticaB\Ex01\Solution. Estas carpetas se pueden encontrar dentro del fichero labs12.zip.
Tareas Información adicional

1. Abrir Visual Studio .NET, y a. Para más información sobre la apertura de un archivo de proyecto,
abrir el archivo consultar el siguiente recurso:
PurchaseOrderApplication • La documentación de ayuda de Visual Studio .NET. Para obtener
.sln. Para abrir el archivo de información adicional sobre cómo abrir un archivo de proyecto,
solución, vaya a en Buscar, seleccionar la casilla de verificación Buscar sólo en
PracticaB\Ex01\Starter\ títulos, y buscar utilizando la frase Cuadro de diálogo Abrir
OrderApplication. proyecto.
2. Añadir un control a. Para más información sobre agregar controles al Diseñador de
SQLDataAdapter a la clase componentes o el uso del Asistente para la configuración del
OrderApplicationData. En el adaptador de datos, consultar los siguientes recursos:
Asistente para la • Lección: Agregar objetos ADO.NET y configurar objetos
configuración del adaptador ADO.NET en una aplicación Windows Forms, en el módulo
de datos, utilizar la “Uso de datos en aplicaciones Windows Forms”.
información
NorthwindConnection y • Práctica: Agregar objetos ADO.NET y configurar objetos
crear la siguiente instrucción ADO.NET en una aplicación Windows Forms, en el módulo
Select de SQL: “Uso de datos en aplicaciones Windows Forms”.

SELECT * FROM Orders • La documentación de ayuda de Visual Studio .NET. Buscar


WHERE (EmployeeID = utilizando la frase Diseñador de componentes o la frase
@EmployeeID) Asistente para la configuración del adaptador de datos.

• Asegurarse de que el
asistente ha creado los
comandos Insert, Update
y Delete.
• Cambiar el nombre del
nuevo SQLDataAdapter
por OrdersDataAdapter.
3. Utilizar la Lista de tareas para No se requiere información adicional para esta tarea.
localizar la sección de código
'TODO: 1', y crear una
variable local para guardar
una instancia de
NorthwindDataSet y
asignarle el nombre
tempDataSet.
4. Utilizar la Lista de tareas para a. Para más información sobre asignar valores a la colección
localizar la sección de código Parameters de los objetos Command, consultar los siguientes
'TODO: 2', y agregar recursos:
@employeeID (el global • Lección: Acceder y modificar datos utilizando DataSets, en el
employee ID) a la colección Módulo “Uso de datos en aplicaciones Windows Forms”.
Parameters de la propiedad
SelectCommand de • Práctica: Poblar y actualizar DataSets, en el módulo “Uso de
OrdersDataAdapter y datos en aplicaciones Windows Forms”.
OrderDetailsDataAdapter. • La documentación del SDK de Visual Studio .NET. Buscar
utilizando la frase Usando parámetros con un DataAdapter.
Tareas Información adicional

5. Utilizar la Lista de tareas a. Para más información sobre rellenar datasets con datos utilizando un
para localizar la sección de DataAdapter, consultar los siguientes recursos:
código 'TODO: 3', e • Lección: Acceder y modificar datos utilizando DataSets, en el
invocar el método Fill de módulo “Uso de datos en aplicaciones Windows Forms”.
OrdersDataAdapter y
OrderDetailsDataAdapter • Práctica: Poblar y actualizar DataSets, en el Módulo “Uso de datos
para rellenar las tablas en aplicaciones Windows Forms”.
Orders y OrderDetails de • La documentación del SDK del .NET Framework. Para información
tempDataSet. adicional sobre asignar valores a la colección Parameters de
objetos Command, buscar utilizando la frase Poblando un
DataSet desde un DataAdapter.
6. Colocar un punto de a. Para más información sobre generar y depurar aplicaciones, consultar el
interrupción al principio del siguiente recurso:
procedimiento • La documentación de ayuda de Visual Studio .NET. Buscar
RefreshLocalData. utilizando la frases Versiones por defecto y personalizadas y Uso
Compilar y ejecutar la del depurador.
aplicación. Desde el menú
Data, hacer clic en Refresh
Data, y avance por cada
línea de código. Localizar y
revisar el contenido del
archivo
NorthwindData.XML, que
se encuentra en la versión
más reciente de la carpeta
C:\Documents and
Settings\All Users\
Application Data\
Northwind Traders\
PurchaseOrder\.
Ejercicio 2
Modificar un DataSet
En este ejercicio, examinaremos el código que crea objetos de tablas de datos, insertaremos nuevas
filas de datos y abriremos la información a un dataset existente.

Escenario
La tabla Orders utiliza una columna denominada OrderID que se incrementa automáticamente
para generar claves primarias cuando se crean nuevas filas en la base de datos. Los datasets
también generan este valor cuando se inserta una nueva fila en la tabla Orders. La aplicación de
órdenes de compra utiliza un dataset global denominado pendingOrdersData para almacenar
todos los pedidos hasta que se envíen a la base de datos. Cada pedido se asocia a uno o más detalles
del pedido. La tabla Orders incluye una columna OrderID que equivale a la columna OrderID de la
tabla Order Details.
Uno de sus colaboradores ha escrito un procedimiento denominado SaveOrders que crea nuevas
filas en la tabla Orders, captura el valor del OrderID generado por el dataset y lo utiliza para crear
filas en la tabla Order Details. Una vez que todas las filas de la tabla Order Details se han creado,
el procedimiento almacena la información de órdenes en un archivo XML denominado
PendingOrders.XML. Nosotros decidimos revisar el código más estrechamente para entender cómo
funciona.
Hay archivos de solución asociados con este ejercicio. Encontrará los archivos de inicio en la
carpeta PracticaB\Ex02\Starter, y los archivos de solución en la carpeta PracticaB\Ex02\Solution.
Estas carpetas se pueden encontrar dentro del fichero labs12.zip.
Tareas Información adicional

1. Abrir Visual Studio .NET, y a. Para más información sobre abrir un archivo de proyecto, consultar el
abrir el archivo siguiente recurso:
PurchaseOrderApplication.s • La documentación de ayuda de Visual Studio .NET. Para
ln. Para abrir el archivo de información adicional sobre abrir un archivo de proyecto, en
solución, ir a Buscar, seleccionar la casilla de verificación Buscar sólo en
PracticaB\Ex02\ títulos, y buscar utilizando la frase Abrir proyecto (cuadro de
Solution\OrderApplication. diálogo).
2. Colocar un punto de a. Para más información sobre generar y depurar aplicaciones, consultar
interrupción al principio del el siguiente recurso:
procedimiento SaveOrders • La documentación de ayuda de Visual Studio .NET. Buscar
en MainForm. Compilar y utilizando las frases Generaciones predeterminadas y
ejecutar la aplicación. Desde personalizadas y Utilizar el depurador.
el menú Datos, hacer clic en
Refrescar datos. Para crear
diferentes elementos del
pedido, hacer clic en el
botón New Order Item y
clic en el botón Save Order.
Avance por cada línea de
código pulsando F10 y
examine el aspecto del
código.
Cuando examine el código,
busque lo siguiente:
• El procedimiento
SaveOrders crea una
nueva fila en la tabla
Orders y asigna las
columnas a valores de
los controles de
MainForm. Cuando la
fila se añade a la tabla,
el OrderID de
incremento automático
generado por el dataset
se almacena en una
variable denominada
clientOrderID.
• El procedimiento
SaveOrders crea filas
en la tabla Order Details
y utiliza el valor de
clientOrderID para
poblar la columna
OrderID de cada fila
insertada en la tabla
Order Details.
Ejercicio 3
Actualizar un DataSet a una fuente de datos
En este ejercicio, crearemos una relación entre dos tablas para crear un dataset tipado y para
actualizar los cambios desde el dataset a un DataSource.

Escenario
En la base de datos Northwind, cada pedido está asociado a uno o más detalles de pedido. La tabla
Orders incluye una columna OrderID que equivale a la columna OrderID de la tabla Order Details.
Cuando creamos una nueva fila en la tabla Orders, el procedimiento SaveOrders garantiza que
todas las filas secundarias de la tabla Order Details tienen el mismo OrderID que las principales de
la tabla Orders. Cuando actualizamos el dataset a una fuente de datos, en primer lugar debe
actualizarse la tabla Orders y, a continuación, la tabla Order Details. Sin embargo, cuando
actualizamos una fila en la tabla Orders, la base de datos generará un nuevo OrderID que puede no
concordar con los valores secundarios la tabla Order Details. Esto provoca un error cuando
intentamos actualizar la tabla Order Details.
Una forma de solucionar este problema es escribir código que utilice eventos del dataset para
capturar el nuevo OrderID generado por la base de datos y asignarle todas las filas secundarias de la
tabla Order Details. Sin embargo, hay otras opciones disponibles cuando se utilizan datasets
tipados y DataAdapters para cada tabla de una base de datos. En lugar de escribir código para
eventos del dataset, podemos utilizar la opción Actualizar DataSet del Asistente para la
configuración del adaptador de datos. Con esta opción habilitada, el asistente agrega una
instrucción SELECT tras las instrucciones Insert y Update para recuperar la columna Identity
generada por la base de datos.
Cuando creamos una relación entre tablas utilizando el diseñador XML, podemos escoger cómo se
gestionan las relaciones de las tablas cuando se modifica la tabla principal. Por ejemplo, si
establecemos Regla de borrado en Cascada (valor predeterminado), y eliminamos filas de una
tabla principal, todas las filas relacionadas de la tabla secundaria también se eliminan. Cuando
creamos una relación entre las tablas Orders y Order Details, es importante establecer el valor de la
opción Regla de borrado en Cascada (valor predeterminado) para que los cambios realizados a
una tabla principal se transmitan en cascada a las tablas secundarias.
Cuando actualizamos una fila de la tabla Orders, el DataAdapter devuelve el valor OrderID
generado por la base de datos y cambia el valor de la tabla Orders del dataset. Con la regla de
actualización en cascada, todas las filas secundarias de la tabla Order Details del dataset se
cambiarán automáticamente con el nuevo OrderID de la principal. Ahora, cuando actualizamos la
tabla Order Details a la base de datos, tendrá el mismo OrderID que la principal.
Existen archivos de inicio y de solución asociados a este ejercicio. Encontrará los archivos de inicio
en la carpeta PracticaB\Ex03\Starter, y los archivos de solución en la carpeta
PracticaB\Ex03\Solution. Estas carpetas se pueden encontrar dentro del fichero labs12.zip.
Tareas Pasos detallados

1. Abrir Visual Studio .NET, y a. Para más información sobre abrir un archivo de proyecto, consultar el
abrir el archivo siguiente recurso:
PurchaseOrderApplication • La documentación de ayuda de Visual Studio .NET. Para
.sln. Para abrir el archivo de información adicional sobre abrir un archivo de proyecto, en
solución, vaya a Buscar, seleccionar la casilla de verificación Buscar sólo en
PracticaB\Ex03\Starter\ títulos, y buscar utilizando la frase Cuadro de diálogo Abrir
OrderApplication. proyecto.
2. Utilizar el Diseñador XML a. Para más información sobre el uso del diseñador XML, consultar los
para crear una relación entre siguientes recursos:
las tablas Orders y Order • Lección: Acceder y modificar datos utilizando DataSets, en el
Details del archivo módulo “Uso de datos en aplicaciones Windows Forms”.
NorthwindDataSet.xsd.
• Demostración: Crear un esquema de base de datos utilizando el
Diseñador de esquemas XML, en el módulo “Uso de datos en
aplicaciones Windows Forms”.
• En la documentación de ayuda de Visual Studio .NET, buscar
utilizando la frase Diseñador XML.
3. Utilizar la Lista de tareas a. Para más información sobre actualización de una fuente de datos,
para localizar la sección de consultar los siguientes recursos:
código ‘TODO: 1’ en la • Lección: Acceder y modificar datos utilizando DataSets, en el
vista de código de módulo “Uso de datos en aplicaciones Windows Forms”.
OrderApplicationDataClass
.vb y actualizar la base de • Práctica: Poblar y actualizar DataSets, en el módulo “Uso de datos
datos utilizando el método en aplicaciones Windows Forms”.
Update de • En la documentación de ayuda de Visual Studio .NET, buscar
OrdersDataAdapter y utilizando la frase Actualizar la base de datos con un
OrderDetailsDataAdapter. DataAdapter y un DataSet.
La regla de actualización en
cascada impuesta por la
relación entre las dos tablas
debería recuperar
automáticamente el OrderID
generado por el servidor.
Cuando se crea una fila
Order, se asigna a filas
relacionadas de la tabla
Order Details en el equipo
cliente.
Tareas Información adicional

4. Compilar y ejecutar la a. Para más información sobre generar y depurar nuestras aplicaciones y
aplicación. En la barra de sobre el uso del Explorador de servidores, consultar el siguiente
herramientas, hacer clic en recurso:
el botón Refrescar y elegir • En la documentación de ayuda de Visual Studio .NET, buscar
un nombre de empleado. utilizando las frases Versiones por defecto y personalizadas, Uso
Para crear un pedido, hacer del depurador y Ventana del Explorador de servidores.
clic en el botón New Order
Item. Para guardar el
pedido, hacer clic en el
botón Save Order y, a
continuación, hacer clic en
el botón Submit de la barra
de herramientas. Utilizar el
Explorador de servidores
para verificar que el pedido
ha sido guardado en la base
de datos.
Ejercicio 4
Enlazar y formatear datos en controles
En este ejercicio, enlazará datos a controles y formateará los datos utilizando los eventos de la case
Binding.

Escenario
El control OrderItemControl está bajo desarrollo y requiere código para enlazar los controles
constituyentes a datos desde la tabla Products. Un método en el control denominado
GetProductData ha sido creado y acepta un parámetro denominado productsTable que contiene
datos de la tabla Products. Necesitamos enlazar datos desde esta tabla para los controles
constituyentes. También necesitamos convertir los valores en la columna Price a formato monetario
cuando los enlazamos al control UnitPriceTextBox.
Existen archivos de inicio y de solución asociados a este ejercicio. Encontrará los archivos de inicio
en la carpeta PracticaB\Ex04\Starter, y los archivos de solución en la carpeta
PracticaB\Ex04\Solution. Estas carpetas se pueden encontrar dentro del fichero labs12.zip.

Tareas Pasos detallados

1. Abrir Visual Studio .NET y a. Para más información sobre abrir un archivo de proyecto, consultar los
el archivo siguientes recursos
PurchaseOrderApplication.s • La documentación de ayuda de Visual Studio .NET. Para
ln. Para abrir el archivo de información adicional sobre abrir un archivo de proyecto, en
solución, vaya a Buscar, seleccionar la casilla de verificación Buscar sólo en
PracticaB\Ex04\Starter\ títulos, y buscar utilizando la frase Cuadro de diálogo Abrir
OrderApplication. proyecto.

2. Utilizar la Lista de tareas a. Para más información sobre enlazar controles a datos, consultar los
para localizar la sección de siguientes recursos:
código ‘TODO: 1’ en la • Lección: Enlazar controles a datos, en el módulo “Uso de datos en
vista de código de aplicaciones Windows Forms”.
OrderItemControl.vb, y
asignar DataSource de • Práctica: Enlazar controles a datos, en el módulo “Uso de datos en
ProductNameComboBox a aplicaciones Windows Forms”.
la DataTable pasada al • La documentación del SDK del .NET Framework. Para
procedimiento información adicional sobre enlazar controles a datos, buscar
GetProductData. Asignar utilizando la frase Enlace de datos y Windows Forms.
DisplayMember y
ValueMember de
ProductNameComboBox a
las columnas ProductName
y ProductID
respectivamente.
Tareas Información adicional

3. Utilizar la Lista de tareas a. Para más información sobre enlazar controles a datos, consultar los
para localizar la sección de siguientes recursos:
código 'TODO: 2', y • Lección: Enlazar controles a datos, en el módulo “Uso de datos en
declarar un objeto Binding, aplicaciones Windows Forms”.
y utilizarlo para enlazar la
propiedad Text de • Práctica: Enlazar controles a datos, en el módulo “Uso de datos en
UnitPriceTextBox a la aplicaciones Windows Forms”.
columna UnitPrice de la • La documentación del SDK del .NET Framework. Para
DataTable pasada al información adicional sobre enlazar controles a datos, Buscar
procedimiento utilizando la frase Enlace de datos y Windows Forms.
GetProductData.
4. Utilizar la Lista de tareas a. Para más información sobre crear procedimientos de eventos para
para localizar la sección de objetos Binding, consultar los siguientes recursos:
código 'TODO: 3', y crear • Lección: Enlazar controles a datos, en el módulo “Uso de datos en
un procedimiento de evento aplicaciones Windows Forms”.
denominado
DecimalToCurrency que • Práctica: Formatear controles enlazados a datos, en el módulo “Uso
convierte el argumento de de datos en aplicaciones Windows Forms”.
evento ConvertEventArgs • La documentación del SDK del .NET Framework. Para
a un formato monetario. información adicional sobre enlazar controles a datos, Buscar
utilizando la frase Enlace de datos y Windows Forms.
5. Utilizar la Lista de tareas a. Para más información sobre crear procesadores de eventos, consultar
para localizar la sección de los siguientes recursos:
código 'TODO: 4', y crear • Lección: Crear un procesador de eventos para un control, en el
un procesador de eventos módulo “Trabajar con controles”.
para el evento Format del
objeto Binding creado en el • Práctica: Crear un procesador de eventos para un control, en el
paso 4. módulo “Trabajar con controles”.
• La documentación del SDK de Visual Studio .NET. Para
información adicional sobre enlazar controles a datos, Buscar
utilizando la frase Crear procesadores de eventos en tiempo de
ejecución para Windows Forms.
6. Compilar y ejecutar la a. Para más información sobre generar y depurar nuestras aplicaciones,
aplicación. En la barra de consultar el siguiente recurso:
herramientas, hacer clic en • La documentación de ayuda de Visual Studio .NET. Buscar
el botón Actualizar, y utilizando las frases Generaciones predeterminadas y
seleccionar un nombre de personalizadas y Utilizar el depurador.
empleado. Para poblar el
control OrderItemControl,
hacer clic en el botón New
Order Item. Navegar a
través de los productos
utilizando el control
ProductNameComboBox.

También podría gustarte