Herramientas de usuario

Herramientas del sitio


cursos:informatica:vb:ado

ADO

**¿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 desconectadoes 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. 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.

** Lección: descripción de ADO.NET **

** ¿Qué es ADO.NET? **

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.

Objeto Descripción
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.
DataAdapter Utiliza 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 utilizar un objeto Connection **

Introducción

Antes de trabajar con datos, es necesario establecer primero una conexión con una fuente de datos. Para conectar con una fuente de datos, escogemos el tipo de conexión, especificamos la fuente de datos, y abrimos la conexión a la fuente de datos. Cuando acabamos de trabajar con los datos, cerraremos la conexión.

Escoger el tipo de conexión

Podemos utilizar el objeto Connection para conectar a una fuente de datos específica. Podemos utilizar SqlConnection para conectar a bases de datos SQL Server o OleDbConnection para conectar a otros tipos de fuentes de datos.

Especificar la fuente de datos

Después de escoger el tipo de conexión, utilizamos una propiedad ConnectionString para especificar el proveedor de datos, la fuente de datos, y demás información utilizada para establecer la conexión. El formato de estas cadenas difiere ligeramente entre el espacio de nombres SqlClient y el espacio de nombres OleDb.

Abrir y cerrar la conexión de datos

El objeto Connection soporta un método Open que abre la conexión después de que se hayan establecido las propiedades de la conexión, y un método Close que cierra la conexión a la base de datos después de que todas las transacciones se hayan liberado.

Ejemplo de SQL

El siguiente ejemplo muestra cómo utilizar un objeto Connection, la propiedad ConnectionString y el método Open para conectarnos a una base de datos SQL Server utilizando el Data Provider .NET de SQL Server:

Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
PubsSQLConn.Open( )

**Cómo utilizar un objeto DataAdapter **

Introducción

Tras establecer una conexión con una fuente de datos, podemos utilizar un adaptador de datos para intercambiar datos entre la fuente de datos y un dataset. En muchas aplicaciones, esto significa leer datos de una base de datos en un dataset mediante un adaptador de datos y a continuación escribir los datos cambiados desde el dataset al adaptador de datos y nuevamente a la base de datos. Sin embargo, un adaptador de datos puede mover datos entre cualquier fuente y un dataset. Por ejemplo, podría existir un adaptador que mueva datos entre un servidor que ejecute Microsoft Exchange y un dataset.

Tipos de adaptadores de datos

Visual Studio incorpora dos adaptadores de datos principales para utilizarse con bases de datos:

OleDbDataAdapter es apropiado para utilizarlo con cualquier fuente de datos que proporcione un proveedor OLE DB. SqlDataAdapter es específico a SQL Server. Como no funciona a través de una capa OLE DB, es más rápido que OleDbDataAdapter. Sin embargo, sólo puede ser utilizado con SQL Server versión 7.0 o superior.

Creación del DataAdapter

Podemos instanciar el DataAdapter utilizando la palabra clave Dim y pasando una cadena de consulta y un objeto Connection como parámetros. El DataAdapter verificará si la Connection está abierta, y si no lo está, la abrirá para nosotros y la cerrará cuando nuestra llamada al método se complete. Esta aproximación es útil si ya hemos establecido las propiedades de un objeto Connection en nuestra aplicación y sólo necesitamos abrir la conexión para poblar las tablas de datos.

Ejemplos

Los siguientes ejemplos muestran cómo crear una instancia de una clase Sql Client DataAdapter. El código para crear una instancia de la clase DataAdapter se muestra en negrita.

Ejemplo de SQL

El siguiente ejemplo muestra cómo acceder a la tabla Titles en la base de datos Pubs:

Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
**Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _ ("Select * from Titles", PubsSQLConn) **
 
' Code to populate the dataset
 
Dim titlesDataset As DataSet = New DataSet
PubsAdapter.Fill(titlesDataset)
 
' Code to bind the dataset to form controls might go here

** Cómo utilizar un objeto DataSet **

Introducción

Después de especificar los datos que queremos recuperar, el próximo paso es poblar un dataset con datos desde la base de datos. Los datasets almacenan datos en un caché desconectado. La estructura de un dataset es similar a la de una base de datos relacional y ofrece un modelo de objetos jerárquico de tablas, filas y columnas. Además, contiene restricciones y relaciones que están definidas para el dataset.

Poblar datasets

Un dataset es un contenedor, de modo que necesitamos poblarlo con datos. Podemos poblar un dataset de varios modos:

Invocar el método Fill de un adaptador de datos. Llamando este método hace que el adaptador ejecute una sentencia SQL o un procedimiento almacenado y pueble una tabla en el dataset con los resultados. Si el dataset contiene múltiples tablas, probablemente tendremos adaptadores de datos separados para cada tabla, y por tanto deberemos llamar a cada método Fill de cada adaptador por separado. Poblar tablas manualmente en el dataset creando DataRows y añadirlas a la colección Rows de la tabla. Podemos hacer esto sólo en tiempo de ejecución. No podemos establecer la colección Rows en tiempo de diseño. Leer un documento XML o flujo en el dataset. Copiar los contenidos de otro dataset. Esta técnica puede ser útil si nuestra aplicación obtiene datasets de diferentes fuentes (diferentes Servicios Web XML, por ejemplo), pero necesita consolidarlos en un único dataset.

Ejemplo

Utilizamos un DataAdapter para acceder a datos almacenados en una base de datos y almacenar los datos en DataTablesdentro de un DataSet e nuestra aplicación.

** Cómo utilizar un control DataGrid **

Introducción

Después de poblar un dataset, podemos visualizar y modificar datos utilizando el control DataGrid de Windows Forms. DataGrid muestra datos en una serie de filas y columnas. El caso más simple es cuando la rejilla se enlaza con una fuente de datos que contiene una única tabla sin relaciones. En ese caso, los datos aparecen simplemente en filas y columnas, como en una hoja de cálculo.

Cómo funciona el control DataGrid

Si el DataGrid se enlaza a datos con múltiples tablas relacionadas y si se activa la navegación en la rejilla, éste visualizará expansores en cada fila. Un expansor permite la navegación desde una tabla padre a una hija. Haciendo clic en un nodo se muestra la tabla hija y haciendo clic en el botón Atrás muestra la tabla padre original. En este modo, la rejilla muestra las relaciones jerárquicas entre tablas.

DataGrid puede proporcionar un interfaz de usuario para un dataset, navegación entre tablas relacionadas y ricas capacidades de formateo y edición.

La visualización y manipulación de datos son funciones separadas: el control gestiona el interfaz de usuario, mientras que las actualizaciones de datos las gestiona la arquitectura de enlace de datos de Windows Forms y por los proveedores de datos ADO.NET. Por tanto, múltiples controles enlazados a la misma fuente de datos permanecerán sincronizados.

Enlace de datos al control

Para que el control DataGrid funcione, debemos enlazarlo con una fuente de datos utilizando las propiedades DataSource y DataMember en tiempo de diseño o el método SetDataBinding en tiempo de ejecución. Este enlace vincula el DataGrid a un objeto de fuente de datos instanciado (como un DataSet o DataTable) y el control DataGrid se actualiza con los resultados de acciones realizadas sobre los datos.

La mayoría de acciones específicas de datos no son realizadas por el DataGrid. Se realiza por medio de la fuente de datos.

Para enlazar el control DataGrid a una única tabla en el diseñador 1. Establecer la propiedad del control DataSource al objeto que contiene los elementos de datos a los que queremos enlazar. 2. Si la fuente de datos es un dataset, establecer la propiedad DataMember al nombre de la tabla con la que queremos enlazar. 3. Si la fuente de datos es un dataset o una vista de datos basada en una tabla de un dataset, añadir código al formulario para poblar el dataset.

Enlace simple

Utilizamos enlace simple para vincular un control a un simple campo en un DataSet. Por ejemplo, podríamos usar enlace simple para un control TextBox o Label. Utilizando la propiedad DataBindings de un control con capacidad de vinculación a datos, podemos especificar qué DataSet y qué campo enlazar con qué propiedad.

Enlace complejo

Utilizamos enlace complejo para enlazar un control a múltiples campos en un DataSet. Por ejemplo, utilizamos enlace complejo para un control DataGrid. Utilizando la propiedad DataSource de estos controles, podemos especificar la tabla a utilizar.

**Cómo utilizar el Asistente para formularios de datos **

Introducción

El Asistente para formularios de datos nos ayuda a crear una aplicación Windows Forms con controles enlazados a datos. Los controles muestran datos desde cualquier fuente de datos que especifiquemos.

Ejecución del Asistente para formularios de datos

Ejecutar el Asistente para formularios de datos es como añadir un elemento a un proyecto existente.

Para ejecutar el Asistente para formularios de datos 1. Crear o abrir una aplicación Windows Forms.

2. Desde el menú Archivo, hacer clic en Agregar nuevo elemento.

Aparece el cuadro de diálogo Agregar nuevo elemento.

3. En el panel Plantillas, hacer clic en Asistente para formularios de datos. 4. Poner un nombre en el formulario de datos y hacer clic en Abrir.

Se inicia el asistente.

5. Seguir los pasos del asistente.

Qué hace el asistente

El Asistente para formularios de datos nos guía a través del proceso completo de crear un formulario enlazado a datos. Cuando hayamos finalizado, tendremos:

Un formulario Windows Form. Controles enlazados a datos en el formulario. Todos los componentes de datos necesarios para el formulario. Métodos que podemos invocar para leer y, para Windows Forms, escribir datos.

El formulario y los controles

Para visualizar datos, el formulario generado por el asistente incluye controles que están enlazados a una fuente de datos. Por ejemplo, el formulario puede contener un control de rejilla.

En un formulario Windows Forms, podemos seleccionar entre una rejilla o controles específicos que muestren un registro cada vez. Podemos también generar botones que permitan a los usuarios navegar entre registros e incluir botones para guardar los cambios a los registros y añadir nuevos.

Elementos de datos

El Asistente para formularios de datos puede crear nuevos componentes de datos o utilizar componentes que estén disponibles en nuestro proyecto. Un componente de datos para el formulario está formado por varios elementos discretos:

Una conexión a una fuente de datos, como una base de datos. Un adaptador de datos que referencia una sentencia SQL o procedimiento almacenado para obtener datos. Un dataset tipado contiene los registros recuperados de la base de datos. El dataset incluye un esquema, un archivo de clase dataset y una instancia del dataset en el formulario.

Si utilizamos el asistente para crear una fuente de datos, conectará nuestra aplicación a la base de datos especificada. Dentro de la base de datos, el asistente puede acceder a tablas o vistas.

El asistente puede opcionalmente crear y utilizar una referencia a un Servicio Web XML como la fuente de datos. En ese escenario, se asume que el Servicio Web XML es capaz de devolver un dataset.

Podemos utilizar el asistente para acceder a múltiples tablas y establecer relaciones entre ellas. En este caso, los controles en el formulario nos permiten visualizar tanto registros padre como hijos.

Métodos Fill y Update

Una de las tareas que necesitamos realizar es rellenar el dataset con datos de la base de datos. Por defecto, para rellenar el dataset, el asistente genera un botón Load que invoca el código que realiza la operación de llenado. Si estamos creando un nuevo dataset con el asistente, éste genera el método Fill automáticamente. Si estamos trabajando con un dataset existente, el asistente nos ofrece estas opciones para crear un método Fill:

Seleccionar un método existente

Si nuestro proyecto proporciona un método que devuelve un dataset (tanto como valor de retorno de una función o como un parámetro), podemos seleccionar ese método y el asistente genera código para invocar ese método.

Obviar el método

Seleccione esta opción si queremos rellenar el dataset por nosotros mismos en lugar de que el código de llenado se invoque automáticamente.

Si estamos generando un formulario Windows Form, el asistente también puede generar un método Update que podemos invocar para enviar cambios desde el dataset de retorno a la fuente de datos.

Pasos adicionales

Cuando el asistente finaliza y tenemos un nuevo formulario, éste está listo para ejecutarse. Hay algunos pocos pasos adicionales que podemos desear realizar y una variedad de modos en los que puede ampliar lo que el asistente ha realizado.

Por ejemplo, para trabajar con el formulario que acabamos de crear, necesitamos establecer el formulario como el formulario de inicio para que podamos probarlo.

Para establecer el formulario de inicio en Windows Forms 1. En el Explorador de soluciones, hacer clic con el botón derecho en el proyecto, y a continuación hacer clic en Propiedades.

La página de propiedades del Proyecto se abre con las propiedades General visualizadas.

2. Seleccionar el formulario que queremos que sea el formulario de inicio desde la lista de Objeto inicial.

El asistente crea controles, elementos de datos y todo el código necesario para ejecutar el formulario. Podemos leer y modificar este código si es necesario. Podemos querer realizar las siguientes tareas para mejorar el formulario que crea el asistente:

Cambiar el aspecto y disposición de los controles en el formulario. Si no queremos utilizar el botón Load para rellenar el dataset, podemos mover el código de llenado a otra ubicación. Un ejemplo típico es moverlo desde el procesador de eventos del botón al método de inicialización del formulario de modo que el dataset se rellena automáticamente cuando el formulario se ejecuta. Refinar las consultas que el asistente genera para que el adaptador de datos recupere un subconjunto de los datos y que añada o modifique parámetros a los comandos del adaptador. Añadir validación o lógica de negocio al formulario. Añadir lógica de navegación para prevenir que ocurran excepciones cuando nos movemos más allá del primer y último registro.

** Acceder a datos con DataReaders **

El beneficio de utilizar un DataSet es que nos ofrece una vista desconectada de la base de datos. Para aplicaciones de larga ejecución, es a menudo el mejor método. Sin embargo, los desarrolladores de aplicaciones Web generalmente realizan operaciones cortas y sencillas con cada petición, como visualizar datos. Para estas breves operaciones, generalmente no es eficiente mantener un objeto DataSet. En tales casos, podemos utilizar un DataReader.

**Seleccionar entre un DataReader y un DataSet **

Al decidir si nuestra aplicación debería utilizar un DataReader o un DataSet, consideremos el tipo de funcionalidad que nuestra aplicación requiere. Usar un DataSet cuando necesitemos realizar alguna de las siguientes acciones:

Transmitir datos entre niveles o desde un Servicio Web XML. Interactuar dinámicamente con datos, como cuando enlazamos a un control Windows Forms o combinamos y relacionamos datos desde múltiples fuentes. Almacenar localmente datos en caché para nuestra aplicación. Proporcionar una vista jerárquica XML de datos relacionales y utilizar herramientas como Transformaciones XSL o una consulta XML Path Language (XPath) Query sobre nuestros datos.

Si deseamos obtener más información, consultar “XML and the DataSet”en la documentación del .NET Framework SDK.

Realizar procesamiento intensivo sobre datos que no requiera una conexión abierta a la fuente de datos, dejando la conexión disponible a otros clientes.

Si no necesitamos la funcionalidad que proporciona la clase DataSet, podemos mejorar el rendimiento de nuestra aplicación utilizando la clase DataReader para devolver nuestros datos de modo sólo-lectura/sólo-reenvío. Aunque la clase DataAdapter utiliza un DataReader para rellenar los contenidos de un DataSet, utilizando la clase DataReader en su lugar podemos asegurar los siguientes beneficios de rendimiento:

La memoria que sería consumida por el DataSet estará de este modo disponible. El procesamiento que sería requerido para crear y rellenar los contenidos del DataSet en este caso no será necesario.

En esta sección, aprenderemos cómo leer datos desde una fuente de datos utilizando DataReaders.

** Crear un DataReader **

Objetivo

Describir cómo recuperar datos desde una base de datos utilizando un DataReader.

Presentación

Podemos también utilizar un objeto DataReader para leer datos desde una base de datos.

Para minimizar la dificultad de tales situaciones, el DataReader ha sido diseñado para producir un flujo sólo-lectura, sólo-reenvío que se devuelve desde la base de datos. Únicamente un registro a la vez está siempre en memoria. Hay dos clases DataReader: SqlDataReader y OleDbDataReader.

Un DataReader mantiene la conexión abierta hasta que se cierra el DataReader.

Para utilizar un SqlDataReader, declarar un SqlCommand en vez de un SqlDataAdapter. El SqlCommand expone un método ExecuteReader que toma un SqlDataReader como parámetro. Observar que cuando utilizamos un SQLCommand, debemos explícitamente abrir y cerrar SqlConnection.

Dim mySqlConnection As New
SqlConnection("server=(local)\NetSDK;
Trusted_Connection=yes;database=northwind")
mySqlConnection.Open()
Dim mySqlCommand As New SqlCommand(
"select * from customers", mySqlConnection)
Dim myReader As SqlDataReader = mySqlCommand.ExecuteReader()
'...
If Not (myReader Is Nothing) Then
myReader.Close()
End If
If mySqlConnection.State = ConnectionState.Open Then
mySqlConnection.Close()
End If

** Leer datos de un DataReader **

Una vez que hemos invocado el método ExecuteReader del objeto Command, accedemos a un registro en el DataReader invocando el método Read. La posición inicial en el DataReader se sitúa antes del primer registro; por tanto, debemos invocar a Read antes de acceder a cualquier dato. Cuando no hay más registros disponibles, el método Read devuelve False.

**Leer campos desde el registro actual **

Para recuperar datos desde campos en el registro actual, podemos llamar un método Get (por ejemplo: GetDateTime, GetDouble, GetInt32 o GetString). El parámetro del método Get es el valor ordinal del campo que queremos leer. Por ejemplo, el siguiente código lee los campos CustomerID y CompanyName desde el registro actual del DataReader utilizando el método GetString:

Dim customerID As String = myReader.GetString(0)

Dim companyName As String = myReader.GetString(1)

Podemos también referenciar los campos de datos en el registro actual del DataReader por nombre y a continuación llamar a una función de conversión apropiada, como se muestra en el siguiente ejemplo de código:

Dim customerID As String = myReader(“CustomerID”).ToString()

Dim companyName As String = myReader(“CompanyName”).ToString()

**Recorrer todos los registros **

Para recorrer todos los registros y mostrarlos por la consola en un DataReader, podemos utilizar un bucle While, como se muestra en el siguiente código de ejemplo:

While myReader.Read()
 
Console.Write(myReader("CustomerID").ToString() + _
 
" ")
 
Console.WriteLine(myReader("CompanyName").ToString())
 
End While

** Uso de DataSets frente a DataReaders **

El procedimiento general para acceder a bases de datos desde ASP.NET varía, dependiendo de si utilizamos un DataSet o un DataReader:

Usando DataSets Usando DataReaders
1. Conectar a la base de datos utilizando SqlConnection u OleDbConnection. 1. Conectar a la base de datos utilizando SqlConnection u OleDbConnection.
2. Almacenar la consulta de la base de datos en un SqlDataAdapter o en un OleDbDataAdapter. 2. Abrir la conexión con el método Open.
3. Poblar un DataSet desde el DataAdapter utilizando Fill. 3. Almacenar la consulta de la base de datos en objetos SqlCommand u OleDbCommand.
4. Crear una nueva DataView para la tabla deseada. 4. Poblar un DataReader desde el Command utilizando el método ExecuteReader.
5. Enlazar un control servidor, como el DataGrid al DataView. 5. Invocar los métodos Read y Get del DataReader para leer datos.
6. Visualizar manualmente los datos.
7. Cerrar el DataReader y la conexión.