viernes, 28 de mayo de 2010

Acceso a datos con ADO.NET

Descripción



Introducción
Este módulo explica cómo utilizar Microsoft ADO.NET con una aplicación Microsoft Windows Forms para crear, leer, actualizar y eliminar registros de bases de datos Microsoft SQL Server y Microsoft Access
Objetivos
En este módulo, aprenderemos a:
Definir la terminología básica sobre bases de datos, incluyendo los conceptos de base de datos, tabla, registro, campo y clave.
Describir algunos objetos ADO.NET utilizados habitualmente.
Crear y abrir una conexión a una base de datos.
Crear, leer, actualizar y eliminar registros de una base de datos.
Utilizar el Asistente para formularios de datos para crear una sencilla aplicación de acceso a datos
Mostrar y modificar datos extraídos de una base de datos.


conceptos de bases de datos





Introducción
Esta lección ofrece una descripción general de los conceptos básicos de bases de datos. Hace una introducción al lenguaje de consultas estructurado (Structured Query Language, SQL) y explica la diferencia entre entornos de datos conectados y desconectados.
Objetivos de la lección
En esta lección, aprenderemos a:
Describir los elementos básicos de las bases de datos, como base de datos, tabla, registro, campo y clave.
Explicar el proceso general de acceso a datos.
Utilizar sentencias básicas de SQL.
Explicar la diferencia entre un entorno conectado y uno desconectado.
Utilizar el Explorador de servidores para visualizar elementos de las bases de datos.
Estructura de la lección
Esta lección incluye los siguientes temas y actividades:
Terminología de las bases de datos
¿Cómo funciona la programación de bases de datos?
¿Qué es SQL?
¿Qué es un entorno conectado?
¿Qué es un entorno desconectado?
Práctica: identificar escenarios de datos conectados o desconectados


Terminología de las bases de datos




Introducción
Para trabajar con bases de datos, es importante conocer cierta terminología básica.
Definiciones
Los siguientes términos se definen en el contexto de las bases de datos relacionales.
Base de datos relacional
Una base de datos relacional es un tipo de base de datos que almacena información en tablas. Las bases de datos relacionales utilizan valores coincidentes de dos tablas para relacionar datos en una tabla con datos de otra. En una base de datos relacional, normalmente almacenamos un tipo específico de datos sólo una vez.
Tabla
Una tabla es un objeto base de datos que almacena datos en registros (filas) y campos (columnas). Normalmente, los datos tienen relación con una categoría concreta de cosas, como empleados o pedidos.
Registro
Un registro es una colección de datos sobre una persona, un lugar, un evento o algún otro elemento. Los registros son los equivalentes lógicos de filas en una tabla. Por ejemplo, un registro en la tabla Empleados debería tener información sobre un empleado particular.
Campo
Un registro está compuesto de varios campos. Cada campo de un registro contiene una pieza de información sobre el registro. Por ejemplo, el registro de un Empleado tiene campos para el ID del empleado, Apellido, Nombre, etc.
4 Acceso a datos con ADO.NET
Clave principal
Una clave principal identifica de modo único cada fila de una tabla. La clave principal es un campo o una combinación de campos cuyo valor es único para cada fila (o registro) de la tabla. Por ejemplo, el campo Employee ID es la clave primaria para la tabla Empleados. No puede haber dos empleados con el mismo ID.
Clave foránea
Una clave foránea es uno o más campos (columnas) de una tabla que hacen referencia al campo o campos de la clave principal de otra tabla. Una clave foránea indica cómo están relacionadas las tablas.
Relación
Una relación es una asociación establecida entre campos comunes (columnas) de dos tablas. Una relación puede ser de uno a uno, de uno a muchos, o de muchos a muchos. Las relaciones permiten que los resultados de las consultas incluyan datos de varias tablas. Una relación uno a uno entre una tabla Clientes y una tabla Pedidos permitiría que una consulta devolviera todos los pedidos de un determinado cliente.
Acceso de sólo lectura
El acceso de sólo lectura a una base de datos significa que podemos recuperar (leer) los datos pero no podemos modificarlos (escribir). Un archivo de sólo lectura o un documento puede visualizarse o imprimirse pero no puede modificarse de ningún modo.
Acceso de lectura/escritura
El acceso de lectura/escritura a una base de datos significa que podemos recuperar (leer) los datos y modificarlos (escribir)


Cómo funciona la programación de bases de datos



Introducción
Cuando desarrollamos aplicaciones, tenemos diferentes requerimientos para trabajar con datos. En algunos casos, simplemente desearemos mostrar datos en un formulario. En otros casos, es posible que necesitemos crear una forma de compartir información con otra organización.
Principales tareas de la programación de bases de datos
Cuando trabajamos con datos, utilizamos varios objetos para recuperar y modificar información de una base de datos. En general, cuando trabajamos con bases de datos en ADO.NET, realizamos las siguientes tareas:
1. Conectar a una base de datos.
2. Solicitar datos específicos.
Especificar los datos que se desean recuperar y si se necesita acceso de solo lectura o de lectura/escritura a los datos.
3. Recuperar y mostrar los datos.
4. Cerrar la conexión (en algunas aplicaciones).
5. Modificar los datos recuperados (si se dispone de acceso de lectura/escritura).
6. Volver a abrir la conexión (en algunas aplicaciones).
7. Transmitir a la base de datos los cambios realizados en los datos.
8. Cerrar la conexión.
En lecciones posteriores de este módulo, aprenderemos más sobre los objetos y herramientas específicos que podemos utilizar en ADO.NET para trabajar con datos.



¿Qué es SQL?






Introducción
Antes de que podamos escribir una aplicación que utilice datos, necesitamos saber algo sobre el Lenguaje de consulta estructurado (Structured Query Language, SQL). Utilizamos SQL para especificar exactamente qué registros recuperar de una base de datos.
Definición
SQL es un lenguaje estándar de mercado que ha evolucionado hasta convertirse en el medio de mayor aceptación para realizar consultas y modificar datos de una base de datos.
La instrucción SELECT
Utilizando SQL, podemos especificar exactamente qué registros deseamos recuperar y el orden en que los deseamos. Podemos crear una instrucción SQL que recupere información de múltiples tablas a la vez, o podemos crear una instrucción que recupere un registro específico.
La instrucción SELECT devuelve campos específicos de una o más tablas de una base de datos. La siguiente instrucción recupera el nombre de todos los registros de la tabla Empleados:
SELECT Nombre FROM Empleados
Para seleccionar todos los campos de la tabla, se utiliza un asterisco (*):
SELECT * FROM Empleados
Ejemplo con Visual Basic .NET
Cuando utilizamos instrucciones SQL en Microsoft Visual Basic® .NET, debemos poner comillas en las instrucciones, como muestra el siguiente código:
Dim sqlString As String
sqlString = "SELECT * FROM Empleados"
Cláusula WHERE
Podemos utilizar la cláusula WHERE para limitar la selección de registros utilizando múltiples campos para filtrar consultas. El siguiente código muestra cómo utilizar la cláusula básica WHERE para recuperar todos los registros de la tabla Empleados cuyo apellido sea igual a “Danseglio”:
SELECT * FROM Empleados WHERE Apellido = 'Danseglio'
Existen otras formas de la cláusula WHERE que podemos utilizar para depurar más nuestras consultas, como sigue:
Cláusula WHERE IN
Podemos utilizar la cláusula WHERE IN para obtener todos los registros que satisfacen criterios específicos. Por ejemplo, podemos devolver apellidos de empleados en determinados estados, como muestra el siguiente código:
SELECT Apellido
FROM Empleados
WHERE Empleados.Estado IN ('NY','WA')
Cláusula WHERE BETWEEN
También podemos devolver una selección de registros que se encuentren entre dos criterios específicos. Observe el uso de signo de almohadilla (#) enmarcando las fechas en el siguiente código:
SELECT OrderID
FROM Orders
WHERE OrderDate BETWEEN #01/01/93# AND #01/31/93#
Cláusula WHERE LIKE
Podemos utilizar la cláusula WHERE LIKE para obtener todos los registros en los que exista una condición concreta en un campo específico. Por ejemplo, el siguiente código muestra cómo obtener todos los registros en los que el apellido empiece con la letra “D.”
SELECT Apellido FROM Empleados WHERE Apellido LIKE 'D%'
Cláusula ORDER BY
Podemos utilizar la cláusula ORDER BY para obtener registros en un orden determinado. La opción ASC indica orden ascendente. La opción DESC indica orden descendente. El siguiente código devuelve todos los campos de la tabla Empleados y los ordena por el apellido:
SELECT * FROM Empleados ORDER BY Apellido ASC

¿Qué es un entorno conectado?






Introducción
Un entorno conectado es aquel en el que un usuario o una aplicación están conectados continuamente a una fuente de datos. Durante muchos años de la historia de la informática, el único entorno disponible era el entorno conectado.
Ventajas
Un escenario conectado proporciona las siguientes ventajas:
Un entorno conectado es más fácil de mantener.
La concurrencia se controla más fácilmente.
Es más probable que los datos estén más actualizados que en un escenario desconectado.
Inconvenientes
Un escenario conectado tiene los siguientes inconvenientes:
Debe mantenerse una conexión de red constante.
Un escenario conectado proporciona una escalabilidad limitada.
Ejemplos
He aquí algunos ejemplos en los que debe utilizarse una conexión continua:
Una fábrica que requiere una conexión en tiempo real para controlar la salida de producción y el almacén.
Un agente de bolsa que requiere una conexión constante a los valores del mercado.


¿Qué es un entorno desconectado?



Introducción
Con la llegada de Internet, los entornos desconectados se han convertido en algo habitual, y con el creciente uso de dispositivos de mano, los escenarios desconectados se están convirtiendo en algo casi universal. Equipos portátiles, Pocket PCs y Tablet PCs permiten utilizar aplicaciones sin conexión a los servidores o a las bases de datos.
En numerosas situaciones, la gente no trabaja en entornos totalmente conectados o desconectados, sino en un entorno que combina ambas opciones.
Definición
Un entorno desconectado es aquel en el que un usuario o una aplicación no están conectados constantemente a una fuente de datos. Las aplicaciones de Internet utilizan frecuentemente arquitecturas desconectadas. Se abre la conexión, se recuperan los datos y la conexión se cierra. El usuario trabaja con los datos en el navegador y la conexión vuelve a abrirse para actualizar u otras peticiones.
Los usuarios móviles que trabajan con equipos portátiles son también los usuarios principales de los entornos desconectados. Los usuarios pueden llevarse un subconjunto de datos en un equipo desconectado y posteriormente fusionar los cambios con el almacén de datos central.
Ventajas
Un entorno desconectado proporciona las siguientes ventajas:
Las conexiones se utilizan durante el menor tiempo posible, permitiendo que menos conexiones den servicio a más usuarios.
Un entorno desconectado mejora la escalabilidad y el rendimiento de las aplicaciones, maximizando la disponibilidad de conexiones.
Inconvenientes
Un entorno desconectado tiene los siguientes inconvenientes:
Los datos no siempre están actualizados.
Pueden producirse conflictos de cambios que deben solucionarse.
10 Acceso a datos con ADO.NET
La transmisión de datos puede percibirse más lenta de lo que sería en entornos conectados.
Ejemplos
He aquí algunos ejemplos en los que podría ser apropiado un entorno desconectado:
Una aplicación que mantiene datos de clientes en un equipo portátil de un representante.
Una aplicación que hace un seguimiento de lluvias y precipitaciones.
Una aplicación que un granjero utiliza para contar el ganado. La aplicación está en el dispositivo basado en Microsoft Windows CE del granjero que ejecuta Microsoft SQL Server 2000 Windows CE Edition.
Gestión de actualizaciones en una aplicación desconectada
En un entorno desconectado, varios usuarios pueden modificar los datos de los mismos registros al mismo tiempo; por ello, nuestra aplicación debe gestionar conflictos en las actualizaciones de datos. Existen varias formas para gestionarlos:
Permitir que prevalezcan las actualizaciones más recientes.
Permitir que prevalezcan las primeras actualizaciones realizadas.
Escribir código en la aplicación que permita a los usuarios determinar qué cambios deberían conservarse. Las soluciones específicas pueden variar dependiendo de los requerimientos de negocio de una determinada aplicación.

descripción de ADO.NET





Introducción
Esta lección ofrece una descripción de ADO.NET y de su papel principal en aplicaciones que trabajan con bases de datos.
Objetivos de la lección
En esta lección, aprenderemos a:
Describir los principales componentes de la arquitectura de ADO.NET.
Explicar cómo trabajar con datos utilizando objetos en el modelo de objetos de ADO.NET.
Describir el soporte de XML en ADO.NET.
Estructura de la lección
Esta lección incluye los siguientes temas y actividades:
¿Qué es ADO.NET?
Objetos comunes de ADO.NET
Demostración del instructor: Uso del Explorador de servidores
Cómo trabajar con bases de datos en el Explorador de servidores
ADO.NET y XML
Práctica: acceso a datos de sólo lectura

¿Qué es ADO.NET?




Introducción
Con independencia de lo que hagamos con los datos, hay ciertos conceptos fundamentales que debemos conocer sobre los datos en ADO.NET. Es posible que nunca necesitemos conocer algunos de los detalles de la gestión de datos, pero es útil conocer la arquitectura de los datos en ADO.NET, cuáles son los principales componentes de datos, y cómo se acoplan las piezas. Este tema no proporciona detalles muy elaborados, sino que es una introducción a los conceptos relacionados con la integración de datos en ADO.NET.
Definición
ADO.NET es un conjunto de clases para trabajar con datos. Proporciona:
Un sistema diseñado para entornos desconectados.
Un modelo de programación con soporte avanzado de XML.
Un conjunto de clases, interfaces, estructuras y enumeraciones que gestionan el acceso a datos desde el .NET Framework.
Componentes de ADO.NET
Los componentes de ADO.NET han sido diseñados para separar el acceso a datos de la manipulación de los datos. Existen dos componentes principales de ADO.NET que lo cumplen: el componente DataSet y los proveedores de datos .NET. Los proveedores de datos .NET constan de un conjunto de componentes que incluyen los objetos Connection, Command, DataReader y DataAdapter. Los componentes del proveedor de datos .NET están diseñados explícitamente para la manipulación de datos desconectados.

ADO.NET y Windows Forms proporcionan componentes para el consumidor de datos que podemos utilizar para mostrar nuestros datos. Incluyen controles como DataGrid, que pueden ser enlazados a datos, y propiedades de enlace a datos en la mayoría de controles estándares de Windows, como los controles TextBox, Label, ComboBox y ListBox.

El .NET Framework incluye numerosos proveedores de datos .NET, incluyendo el proveedor de datos de .NET para SQL Server, el proveedor de datos de .NET OLE DB para SQL, y el proveedor OLE DB para Microsoft Jet. Si necesitamos un proveedor personalizado, podemos escribir proveedores de datos .NET para cualquier fuente de datos. En este módulo, nos centraremos en el proveedor de datos de .NET OLE DB para SQL.

Objetos comunes de ADO.NET




Introducción
Los proveedores de datos de .NET y el espacio de nombres System.Data proporcionan los objetos ADO.NET que utilizaremos en un escenario desconectado.
Objetos ADO.NET
ADO.NET proporciona un modelo de objetos común para proveedores de datos de .NET. La siguiente tabla describe los principales objetos ADO.NET que utilizaremos en un escenario desconectado.
Connection
Establece y gestiona una conexión a una fuente de datos específica. Por ejemplo, la clase OleDbConnection se conecta a fuentes de datos OLE DB.
Command
Ejecuta un comando en una fuente de datos. Por ejemplo, la clase OleDbCommand puede ejecutar instrucciones SQL en una fuente de datos OLE DB.
DataSet
Diseñado para acceder a datos con independencia de la fuente de datos. En consecuencia, podemos utilizarlo con varias y diferentes fuentes de datos, con datos XML, o para gestionar datos locales a la aplicación. El objeto DataSet contiene una colección de uno o más objetos DataTable formados por filas y columnas de datos, además de clave principal, clave foránea, restricciones e información de la relación sobre los datos en los objetos DataTable.
DataReader
Proporciona un flujo de datos eficaz, sólo-reenvío y de sólo-lectura desde una fuente de datos.
DataAdapterUtiliza los objetos Connection, Command y DataReader implícitamente para poblar un objeto DataSet y para actualizar la fuente de datos central con los cambios efectuados en el DataSet. Por ejemplo, OleDbDataAdapter puede gestionar la interacción entre un DataSet y una a base de datos Access.


Cómo trabajar con bases de datos en el Explorador de servidores

Introducción
ADO.NET está estrechamente integrado con XML. Por ello, ADO.NET facilita la conversión de datos relacionales a formato XML. También podemos convertir datos de XML en tablas y relaciones.

Importancia del uso de XML
XML es una forma útil y portátil de representar datos de un modo abierto e independiente de la plataforma. Una característica importante de los datos XML es que están basados en texto. El uso de datos basados en texto, en contraposición a pasar datos binarios como el conjunto de resultados de ADO, facilita el intercambio de datos XML entre aplicaciones y servicios, aunque se estén ejecutando en diferentes plataformas. XML también permite que las organizaciones intercambien datos sin necesidad de una personalización adicional del software propietario de cada organización.

Soporte de XML

El modelo de objetos ADO.NET incluye soporte extensivo para XML. Cuando utilice el soporte de XML en ADO.NET, debe tener en cuenta los siguientes hechos y directrices:
Se pueden leer datos de un DataSet en formato XML. El formato XML es útil si desea intercambiar datos entre aplicaciones o servicios en un entorno distribuido.
Se puede rellenar un DataSet con datos XML. Esto resulta útil si se reciben datos XML de otra aplicación o servicio y se desea actualizar una base de datos utilizando estos datos.
Puede crearse un esquema XML para la representación XML de los datos en un DataSet. El esquema XML puede utilizarse para realizar tareas como serializar los datos XML a un flujo o archivo.
Pueden cargarse datos XML desde un flujo o un archivo a un árbol Document Object Model (DOM). A continuación, pueden manipularse los datos como XML o como un DataSet. Para ello, debe disponer de un esquema XML para describir la estructura de los datos para el DataSet.
Pueden crearse DataSets tipados. Un DataSet tipado es una subclase de DataSet, con propiedades y métodos adicionales para tener disponible la funcionalidad de DataSet. Para describir la representación XML del DataSet tipado, Visual Studio .NET genera una definición equivalente del esquema XML para este DataSet

Ejemplo de uso de XML en una aplicación desconectada

Este ejemplo describe cómo utilizar XML en una aplicación ADO.NET desconectada. Podemos utilizar XML para intercambiar datos entre las distintas partes del sistema del modo siguiente:
1. La aplicación cliente invoca un servicio Web XML para solicitar datos de una base de datos.
2. El servicio Web XML consulta una fuente de datos para obtener los datos solicitados.
3. El servicio Web XML carga los resultados en un DataSet.
4. El servicio Web XML traduce los datos a formato XML y devuelve los datos XML a la aplicación cliente.
5. La aplicación cliente procesa los datos XML de algún modo. Por ejemplo, el cliente puede cargar los datos XML en un DataSet y enlazarlos a un control del interfaz de usuario como un DataGrid. Cuando la aplicación cliente esté lista, invoca un servicio Web XML para actualizar la fuente de datos con los cambios de los datos.
6. El servicio Web XML carga los nuevos datos XML en un DataSet y utiliza los nuevos datos para actualizar la fuente de datos.

ADO.NET y XML
Introducción
Podemos utilizar el Explorador de servidores para visualizar y manipular enlaces a datos, conexiones de bases de datos, y recursos del sistema en cualquier servidor para el que tengamos acceso en red. Utilizando el Explorador de servidores, podemos:
Crear y abrir conexiones de datos a Microsoft Access, a servidores ejecutando Microsoft SQL Server y a otras bases de datos.
Iniciar sesión en servidores y mostrar sus bases de datos, tablas, campos y sus datos sin abandonar el entorno de desarrollo ni utilizar el software de la base de datos.
Visualizar los servicios del sistema, incluyendo el registro de sucesos, colas de mensajes, contadores de rendimiento y otros servicios del sistema.
Visualizar información sobre los Servicios Web XML disponibles y los métodos y esquemas que proporcionan.
Almacenar proyectos y referencias a bases de datos.
Crear componentes de datos que hagan referencia al recurso de datos o monitorizar su actividad arrastrando nodos desde el Explorador de servidores a nuestros proyectos de Visual Studio .NET.
Interactuar con recursos de datos programando los componentes de datos creados en nuestros proyectos de Visual Studio .NET.
Abrir el Explorador de servidores
Podemos abrir el Explorador de servidores en cualquier momento durante el proceso de desarrollo, mientras trabajamos con cualquier tipo de proyecto o elemento.
Abrir el Explorador de servidores
• En el menú Ver, hacer clic en Explorador de servidores.
– O –
• Si la ficha Explorador de servidores se muestra en el extremo izquierdo de la pantalla, hacer clic en esa ficha.

Agregar y eliminar conexiones a datos
El Explorador de servidores muestra las conexiones a bases de datos bajo el nodo Conexiones de datos. Después de establecer una conexión, podemos diseñar programas para abrir conexiones y recuperar y manipular los datos. De modo predeterminado, el Explorador de servidores muestra conexiones a datos y enlaces a servidores utilizados con anterioridad.
Agregar una conexión a datos en el Explorador de servidores
1. En el menú Herramientas, hacer clic en Conectar con base de datos.
Se abre el cuadro de diálogo Propiedades del vínculo de datos.
2. En la ficha Proveedor del cuadro de diálogo Propiedades del vínculo de datos, seleccionar un proveedor.
3. En la ficha Conexión del cuadro de diálogo Propiedades del vínculo de datos, proporcionar la información que se solicita. Los campos de entrada que se muestran pueden variar en función del proveedor seleccionado en la ficha Proveedor.
Por ejemplo, si seleccionamos el proveedor OLE DB para SQL Server, la ficha Conexión muestra campos para el nombre de servidor, el tipo de autenticación y la base de datos.
4. Hacer clic en Aceptar para establecer la conexión de datos.
El cuadro de diálogo Propiedades del vínculo de datos se cierra, y la nueva conexión de datos aparece debajo del nodo Conexiones de datos, con el nombre del servidor y de la base de datos a la que se accede. Por ejemplo, si creamos una conexión de datos a una base de datos denominada NWind en un servidor llamado Server1, aparece una nueva conexión con el nombre Server1.NWind.dbo bajo el nodo Conexiones de datos.
Eliminar una conexión de datos desde el Explorador de servidores
1. En el Explorador de servidores, expandir el nodo Conexiones de datos.
2. Seleccionar la conexión a la base de datos deseada.
3. Pulsar DELETE.
No se produce ningún efecto en la base de datos. Hemos eliminado la referencia desde nuestra vista.

Arrastrar y soltar recursos de datos
Podemos arrastrar elementos desde el Explorador de servidores y soltarlos en el Diseñador de Windows Forms. Ubicar elementos en el Diseñador de Windows Forms crea nuevos recursos de datos que están preconfigurados para recuperar información de fuentes de datos seleccionadas.
Crear un nuevo componente de datos utilizando el Explorador de servidores
Podemos crear un componente de datos preconfigurado para hacer referencia a un determinado recurso.
1. En la vista de Diseño, abrir el formulario al que deseamos agregar un componente de datos.
2. En el Explorador de servidores, seleccionar el elemento de datos que deseamos utilizar. Un ejemplo de elemento de datos es un campo o una tabla.
3. Arrastrar el elemento desde el Explorador de servidores a la superficie del diseñador.
Visualizar elementos de la base de datos
Podemos utilizar el Explorador de servidores para visualizar y recuperar información de todas las bases de datos instaladas en un servidor. Podemos hacer una lista de tablas, vistas, procedimientos almacenados y funciones de la base de datos en el Explorador de servidores, expandir tablas individuales para hacer una lista de sus columnas y disparadores, y hacer clic con el botón derecho sobre la tabla para seleccionar el Diseñador de tablas del menú contextual.

No hay comentarios:

Publicar un comentario