Sesion 06 - Arquitectura Ado - Net - Teoria

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

SESION 06 - ARQUITECTURA ADO .

NET - TEORIA

En este capítulo revisaremos la arquitectura de ADO.NET, los objetos que


intervienen en la conexión con datos y como esto se relaciona con XML en el
trabajo con datos.

A medida que desarrolla aplicaciones que tienen acceso a datos en Visual Studio,
deberá cumplir con diferentes requisitos. En algunos casos, puede que
simplemente desee mostrar datos en un formulario. En otros, quizá necesite idear
un modo de compartir información con otras aplicaciones o procesos.

La arquitectura de datos subyacente que se utiliza para crear aplicaciones en


Visual Studio es ADO.NET. Independientemente de lo que haga con los datos,
hay ciertos conceptos fundamentales que debe entender. Es posible que nunca
utilice ciertos detalles sobre manipulación de datos, por ejemplo, tal vez nunca
cree una base de datos mediante programación, pero es muy útil comprender los
conceptos básicos de ADO.NET, al igual que las herramientas de datos (asistentes
y diseñadores) disponibles en Visual Studio.

La tarea general de trabajar con datos en una aplicación se puede dividir en varios
procesos de nivel superior. Por ejemplo, antes de mostrar los datos a un usuario en
un formulario, debe conectarse a un origen de datos (posiblemente una base de
datos) y, a continuación, obtener los datos que desea mostrar. Una vez incluidos
estos datos en la aplicación, necesitará almacenarlos temporalmente en alguna
parte, por ejemplo en un objeto DataSet.

Una aplicación de datos típica utilizará la mayoría de los procesos que se ilustran
en el diagrama siguiente:

Guardar datos Conectarse a datos

Validar datos Preparara la aplicación


para rec1b1r datos

Modlncar datos Buscar datos en la


en la aplicación aphcac16n

Mostrar datos en formularios


Wlndows Forms

El ciclo de datos

A medida que crea la aplicación, piense en la tarea que intenta lograr.


Documéntese para obtener ayuda en la búsqueda de las herramientas Visual
Studio y objetos .NET Framework que tiene a su disposición.
Conectarse a datos
Para llevar datos a la aplicación (y devolver los cambios al origen de datos), debe
establecerse algún tipo de comunicación bidireccional. Por lo general, esta
comunicación bidireccional es controlada por un objeto de conexión (por ejemplo,
una SqlConnection) que está configurado con una cadena de conexión, o sea, la
información que necesita para conectarse al origen de datos. Visual Studio
proporciona varias herramientas que ayudan a crear conexiones que puede utilizar
la aplicación.

Preparará la aplicación para recibir datos


Si la aplicación utiliza un modelo de datos desconectado, es necesario almacenar
temporalmente los datos de la aplicación mientras trabaja con ellos; un conjunto
de datos (una memoria caché de datos) simplifica el trabajo con los datos hasta
que se vuelve a conectarse con el origen de datos. Antes de hacer una consulta, se
crea un conjunto de datos para recibir los resultados de una consulta. El conjunto
de datos se crea con la misma forma (esquema) de los datos devueltos.

Buscar datos de la aplicación


Independientemente de que la aplicación utilice un modelo de datos desconectado,
necesitará obtener datos. Lleve los datos a la aplicación mediante la ejecución de
consultas o procedimientos almacenados de una base de datos. Las consultas y
procedimientos almacenados se ejecutan mediante TableAdapters y objetos de
comando.

Mostrar datos en formularios de aplicaciones para Windows


Después de llevar los datos a su aplicación, los mostrará normalmente en un
formulario para que los usuarios los vean o modifiquen. Visual Studio
proporciona Ventana Orígenes de datos donde puede arrastrar elementos a un
formulario para crear de forma automática controles enlazados a datos que
muestran los datos.

Modificar datos en la aplicación


Cuando ya ha presentado los datos a los usuarios, es probable que los modifiquen
agregando, cambiando y eliminando registros antes de devolverlos a la base de
datos. Estas modificaciones se realizan manipulando los objetos DataRow
individuales que constituyen las tablas en un conjunto de datos.

Validar datos
Al realizar cambios en los datos, es posible que desee comprobar los cambios
antes de permitir que los valores sean aceptados de regreso en la base de datos o
que éstos se escriban en ella. Validación es el nombre del proceso de comprobar
que estos nuevos valores son aceptables para los requisitos de la aplicación. Puede
comprobar los valores de la aplicación a medida que los modifica.
or

Guardar datos
Después de realizar los cambios en la aplicación (y validarlos), es posible que
desee enviar los cambios a la base de datos. Si está utilizando conjuntos de datos y
un modelo de datos desconectado, debería comprobar si existen infracciones de
concurrencia. (Este término se refiere a una situación en la que los datos de una
base de datos se han modificado desde que se cargaron originalmente en la
aplicación y ahora contiene valores más recientes que los de la aplicación).
También es posible que desee actualizar varias tablas al mismo tiempo, en cuyo
caso puede utilizar una transacción.

¿Qué es ADO.NET?
ADO.NET es un conjunto de clases que exponen servicios de acceso a datos para
el programador de .NET.

ADO.NET ofrece abundancia de componentes para la creación de aplicaciones de


uso compartido de datos distribuidas. Constituye una parte integral de .NET
Framework y proporciona acceso a datos relacionales, XML y de aplicaciones.

ADO.NET satisface diversas necesidades de desarrollo, como la creación de


clientes de base de datos de aplicaciones para usuario y objetos empresariales de
nivel medio que utilizan aplicaciones, herramientas, lenguajes o exploradores de
Internet.

ADO.NET constituye la interfaz fundamental de las aplicaciones para


proporcionar servicios de acceso a datos en la plataforma Microsoft .NET, donde
existen, básicamente, dos elementos:

l . El conjunto de datos desconectado: permiten al usuario trabajar con los


datos de una forma desconectada (System.Data.DataSet). La
representación interna de los datos del DataSet utiliza XML, por lo que el
flujo de datos transferido es independiente de lenguaje y plataforma.

2. Unos proveedores que facilitan la ejecución de operaciones contra un


sistema RDBMS. Actualmente están disponibles en .NET Framework:

• Proveedor de datos de .NET Framework para SQL Server


• Proveedor de datos de .NET Framework para OLE DB
• Proveedor de datos de .NET Framework para ODBC
• Proveedor de datos de .NET Framework para Oracle

Lo novedoso en ADO.NET es el escenario de datos desconectado. Es así que se


enfatizará esta característica que consiste en el siguiente esquema de
funcionamiento básico:

Se utilizará uno de los adaptadores para conectar con el RDBMS


recuperando un conjunto de datos y cerrando la conexión. Ese conjunto,
que sería un objeto DataSet, puede ser transferido entre aplicaciones y
puede operarse sobre él como si fuera una base de datos. Por último, se
restablecerá la conexión usando el proveedor anterior y enviando al
RDBMS las actualizaciones realizadas.

Objetivos de Diseño
• Soportar el modelo de programación multinivel (n-tier): en este modelo,
los datos se leen de la fuente de datos, se desconecta y pasan a través de
los diferentes niveles.

• Integrar el estándar XML: se pueden transformar los datos a XML, pero


también se puede controlar el esquema y leer y escribir en XML.

• Minimizar la curva de aprendizaje desde ADO: se buscó la facilidad de


cambio desde ADO a ADO.NET de los programadores que estuvieran
familiarizados con la anterior tecnología.

• Combinar el paradigma relacional con el orientado a objetos: se provee


una interfaz orientada a objetos de los datos a través del tipo DataSet.

• Reducir los errores de programación: esto se consigue simplificando el


modo en el que se accede a los datos, ya que muchos programadores
tuvieron problemas en este campo con ADO. Se puede acceder a los datos
de dos formas:

o Leyendo todos los datos del resultado de la consulta y


almacenándolos en un caché de memoria: DataSet (Escenario de
datos desconectado).

o Leerlos poco a poco a través de un objeto DataReader. Esto lleva a


una perdida de funcionalidad, pero se evita su uso incorrecto o
inadvertido, ya que era lo que causaba más errores a los
programadores en ADO. DataReader solo es para lectura de datos.
(Escenario de datos conectado).

Características
• ADO.NET no depende de conexiones continuamente activas.

Las aplicaciones se conectan a la base de datos sólo durante el tiempo


necesario para extraer o actualizar los datos. La base de datos ya no
contiene conexiones que la mayor parte del tiempo permanecen inactivas,
así que puede dar servicio a muchos más usuarios.

• Las interacciones con la base de datos se realizan mediante comandos


de datos.
Para efectuar operaciones en una base de datos, se ejecutan instrucciones
SQL o procedimientos almacenados (que incluyen instrucciones SQL).

En ADO.NET los comandos de datos se usan para empaquetar las


instrucciones SQL o los procedimientos almacenados. Por ejemplo, si se
desea leer un conjunto de filas de una base de datos, se crea un comando
de datos y se configura con el texto de una instrucción SQL Select o con el
nombre del procedimiento almacenado que recupera registros.

• Los datos se pueden almacenar en memoria caché en conjuntos de


datos (DataSet)

Ya que sólo son contenedores; se llenan con comandos SQL o


procedimientos almacenados que se ejecutan desde un adaptador de datos.

• Los conjuntos de datos son independientes de los orígenes de datos

Dado que un conjunto de datos no está sujeto directamente a un origen de


datos, resulta un buen punto de integración para datos procedentes de
múltiples orígenes.

• Los datos se conservan como XML

Los datos deben moverse desde el almacén de datos hasta el conjunto de


datos y de ahí a diversos componentes. En ADO.NET, el formato de
transferencia de datos es XML. En consecuencia, si es necesario conservar
datos (por ejemplo, en un archivo), se almacenarán como XML. Si se tiene
un archivo XML, se puede utilizar como cualquier otro origen de datos y
crear un conjunto de datos a partir de él.

No es necesario saber XML para utilizar datos en ADO.NET, ya que


convierte automáticamente los datos a XML y viceversa según sea preciso;
así que se interactúa con los datos utilizando métodos de programación
ordinarios.

• Las estructuras de datos están definidas por esquemas

Los conjuntos de datos se representan como XML. La estructura del


conjunto de datos, es decir, la definición de las tablas, columnas, tipos de
datos, restricciones, etc. que se encuentran en el conjunto de datos, se
define por medio de un esquema XML basado en el lenguaje de definición
de esquemas XML (XSD).

Los esquemas pueden ser generados y actualizados por Visual Studio


.NET según sea necesario, o manualmente.
Ventajas de ADO.NET
ADO.NET ofrece varias ventajas sobre las anteriores versiones de ADO y
sobre otros componentes de acceso a datos. Estas ventajas se incluyen en
las siguientes categorías:

Interoperabilidad
Las aplicaciones ADO.NET pueden aprovechar la flexibilidad y la amplia
aceptación de XML. Dado que XML es el formato de transmisión de
conjuntos de datos a través de la red, cualquier componente que pueda leer
el formato XML podrá procesar los datos. En realidad, no es necesario en
absoluto que el componente receptor sea un componente ADO.NET: el
componente transmisor puede transmitir simplemente el conjunto de datos
a su destino, independientemente de cómo esté implementado el
componente receptor. El componente de destino podría ser una aplicación
de Visual Studio o cualquier otra aplicación implementada con cualquier
herramienta. El único requisito es que el componente receptor pueda leer
XML. Como estándar del sector, XML se diseñó precisamente con el
propósito de alcanzar este tipo de interoperabilidad.

Mantenibilidad
A lo largo de la vida de un sistema implementado es posible hacer
pequeños cambios, pero raramente se intenta hacer cambios importantes,
estructurales, debido a su dificultad. Es de lamentar que sea así puesto que,
en la realidad, tales cambios significativos pueden hacerse necesarios. Por
ejemplo, a medida que una aplicación implementada se hace más popular
entre los usuarios, es posible que el aumento de la carga de rendimiento
haga necesarios cambios estructurales. A medida que crece la carga de
rendimiento en un servidor de la aplicación implementada, los recursos del
sistema pueden escasear y el tiempo de respuesta y el rendimiento pueden
verse afectados. Ante este problema, los arquitectos de software pueden
tomar la decisión de dividir en el servidor el procesamiento de la lógica de
empresa y el procesamiento de la interfaz de usuario en niveles diferentes
y en equipos separados. En la práctica, el nivel del servidor de aplicación
se reemplaza con dos niveles, lo que alivia la escasez de recursos del
sistema.

El problema no consiste en diseñar una aplicación de tres niveles. Por el


contrario, se trata de aumentar el número de niveles después de
implementar una aplicación. Si la aplicación original se implementó en
ADO.NET mediante conjuntos de datos, esta transformación resulta más
sencilla. Cuando reemplace un solo nivel por dos niveles, no olvide
organizar estos dos niveles para que intercambien información. Dado que
los niveles pueden transmitir datos por medio de conjuntos de datos con
formato XML, la comunicación es relativamente fácil.

23
Programabilidad
En Visual Studio, los componentes de datos ADO.NET encapsulan
funcionalidad de acceso a datos de diversas formas que ayudan a
programar de modo más rápido y con menos errores. Por ejemplo, los
comandos de datos condensan la tarea de generar y ejecutar instrucciones
SQL o procedimientos almacenados.

De igual forma, las clases de datos ADO.NET generadas por las


herramientas del diseñador tienen como resultado conjuntos de datos con
tipo. Esto, a su vez, permite el acceso a los datos mediante programación
con tipo.

El código correspondiente al conjunto de datos con tipo es más fácil de


leer. También es más fácil de escribir, porque se proporciona la
finalización de instrucciones.

Rendimiento
Para las aplicaciones desconectadas, los conjuntos de datos ADO.NET
ofrecen ventajas de rendimiento frente a los conjuntos de registros ADO
desconectados. Cuando se utiliza el cálculo de referencias de COM para
transmitir un conjunto de registros desconectado entre niveles, la
conversión de los valores del conjunto de registros a tipos de datos
reconocibles por COM puede suponer un costo de procesamiento
significativo. En ADO.NET, tal conversión de tipos de datos no es
necesaria.

Escalabilidad
Dado que las soluciones Web puede incrementar en gran medida la
demanda de datos, la escalabilidad adquiere una importancia crucial. Las
aplicaciones para Internet tienen un suministro ilimitado de usuarios
potenciales. Aunque una aplicación pueda dar un buen servicio a una
docena de usuarios, eso no significa que pueda dar un servicio igualmente
bueno a cientos o cientos de miles de ellos. Una aplicación que consuma
recursos tales como bloqueos y conexiones de base de datos no dará un
buen servicio a un gran número de usuarios, porque la demanda de
recursos limitados por parte de los usuarios acabará por superar su
disponibilidad.

Para facilitar la escalabilidad, ADO.NET anima a los programadores a


ahorrar recursos limitados. Las aplicaciones ADO.NET utilizan un acceso
desconectado a los datos, por lo que no retienen bloqueos ni conexiones
activas con bases de datos durante largos períodos de tiempo.
_

Requisitos de la plataforma ADO.NET


Microsoft .NET Framework SDK (incluido ADO.NET) es compatible con
Microsoft® Windows XP, Windows 2000, Windows NT 4 con Service
Pack 6a, Windows Millennium Edition, Windows 98 y Windows CE.

El proveedor de datos de .NET Framework para OLE DB y el proveedor


de datos de .NET Framework para ODBC requieren MDAC 2.6 o
posterior y se recomienda MDAC 2.8 Service Pack 1 (SPl). Puede
descargar MDAC 2.8 SPl de Data Access and Storage Developer Center
en el site Microsoft.

Componentes de ADO.NET
La siguiente ilustración muestra los principales componentes de ADO.NET. Que
son:
• DataSet.
• Proveedores administrados

Nivel de prcscantnción •· •• •• •• Nivel de nagoc101 - Nlvel de -­

7
(IIS o Servicio Web) datos
Wlndows Forms Í Conjunto
de datos
Conjunto
de datos

Adaptador Conexión

□•
de datos de da tos

Web Forms "-1 ___ ◄--

·--------------
�-....i''º"'��
(Por ejemplo, BlzThlk)

Componentes ADO.NET
or

En este esquema se muestran los componentes de ADO.NET divididos en tres


capas (3-Tiers):

• Nivel de Datos: El más próximo a la base de datos.

• Nivel de Negocios: Donde se definen las reglas de negocio que el sistema


cumplirá.

• Nivel de presentación: El que contiene las interfases, ya sean Windows o


Web.

Nótese que XML constituye el elemento del nexo entre las capas de presentación
y de negocio. Además el conjunto de datos es parte de la capa de presentación en
el cliente.

Los componentes de ADO.NET están diseñados para separar el acceso a datos de


la manipulación de datos. ADO.NET tiene dos componentes principales que
cumplen esta función: DataSet y el proveedor de datos de .NET Framework, que
es un conjunto de componentes entre los que se incluyen los objetos:

• Connection
• Command
• DataReader
• DataAdapter.

En el siguiente diagrama se ilustran los componentes de la arquitectura de


ADO.NET.

Arquitectura de ADO.NET
Principales objetos
Los objetos principales en ADO.NET son los que permiten el manejo de datos, y
se detallan en el esquema anterior de la arquitectura ADO.NET. Es decir:

• Connection: Conexión
• Command: Comando
• DataReader: Lector de datos
• DataAdapter: Adaptador de datos
• DataSet: Caché de datos.

Objetos de
Proveedores de Propósito
Datos .NET

Connection Provee conectividad a un Origen de Datos.

Provee acceso a comandos de Base de Datos como


Command
Select, Delete, Insert y Update.

DataReader Provee acceso a datos de solo lectura.

Utiliza el objeto Connection para enlazar un objeto


DataSet con un Proveedor de Datos. También
DataAdapter
permite actualizar los Datos en el origen a partir de
las modificaciones hechas en el DataSet.

Es un almacén de datos. Es capaz de almacenar y


representar a una Base de Datos en memoria y
DataSet
desconectada del proveedor de datos (Base de
Datos) que contiene tablas y sus relaciones.

Connection
El objeto Connection proporciona conectividad con un origen de datos. Un
adaptador de datos necesita una conexión abierta con un origen de datos para leer
y escribir datos. Por tanto, un adaptador utiliza objetos Connection para
comunicarse con un origen de datos.
ExecuteScalar
Este método devuelve como valor escalar el correspondiente a la primera columna
de la primera fila del conjunto de resultados.

DataReader
DataReader proporciona una secuencia de datos de alto rendimiento, de sólo
lectura y sólo hacia delante, a partir de un origen de datos.

Siempre se debe llamar al método Close cuando haya terminado de usar el objeto
DataReader. Si Command contiene parámetros de salida o valores devueltos, éstos
no estarán disponibles hasta que se cierre el DataReader.

Mientras está abierto un DataReader, éste usa de forma exclusiva el objeto


Connection. Por eso no podrá ejecutar ningún comando en el objeto Connection,
ni siquiera el de creación de otro DataReader, hasta que se cierre el DataReader
original.

DataAdapter
Utiliza el objeto Connection para enlazar un objeto DataSet con un Proveedor de
Datos. También permite actualizar los Datos en el origen a partir de las
modificaciones hechas en el DataSet.

El objeto DataAdapter representa un conjunto de comandos de datos y una


conexión a base de datos que se utilizan para rellenar el conjunto de datos DataSet
y actualizar el origen de datos proporcionando el puente entre el objeto DataSet y
el origen de datos.

El DataAdapter utiliza objetos Command para ejecutar comandos SQL en el


origen de datos tanto para cargar el DataSet con datos como para actualizar el
origen de datos con los cambios aplicados a los datos incluidos en el DataSet.

Generalmente, cada adaptador de datos intercambia datos entre una sola tabla de
un origen de datos y un solo objeto DataTable del conjunto de datos. Si el
conjunto de datos contiene varias tablas de datos, la estrategia habitual consiste en
tener varios adaptadores de datos que le suministren datos y los escriban de nuevo
en tablas individuales del origen de datos.
Para llenar una tabla de un conjunto de datos, se llama a un método adaptador que
ejecute una instrucción SQL o un procedimiento almacenado. El adaptador crea
un objeto lector de datos (DataReader) para leer los datos de un conjunto de datos.

Existe la opción de leer datos de la base de datos sin tener que almacenarlos en un
conjunto de datos, lo que puede ser muy eficiente en situaciones en las que estén
implicados datos de sólo lectura, así como se pueden ejecutar instrucciones SQL
directamente, sin utilizarlas para llenar un conjunto de datos.
De forma similar, cuando se desee actualizar la base de datos, se deberá invocar
un método adaptador que llame a la instrucción SQL o el procedimiento
almacenado adecuados para realizar la actualización real en la base de datos.

Propiedades importantes
• SelectCommand - referencia a un comando (instrucción SQL o nombre
de procedimiento almacenado) que recupera filas del almacén de datos.

• InsertCommand - referencia a un comando para insertar filas en un


almacén de datos.

• UpdateCommand - referencia a un comando para modificar filas en el


almacén de datos.

• DeleteCommand - referencia a un comando para eliminar filas del


almacén de datos.

• TableMappings - Los nombres de la base de datos y del conjunto de


datos no tienen por qué coincidir. Se pueden crear nuevos nombres de
tabla y columna en el comando del conjunto de datos y, a continuación,
asignarlos a los nombres que se utilizan en la base de datos. Los
adaptadores utilizan la colección TableMappings para mantener la
correspondencia entre las estructuras del conjunto de datos (tablas de datos
y columnas de datos) y las estructuras del almacén de datos (tablas y
columnas).

DataSet
El objeto DataSet es esencial para la compatibilidad con situaciones de datos
distribuidos desconectados con ADO.NET. El DataSet es una representación de
datos residente en memoria que proporciona un modelo de programación
relacional coherente con independencia del origen de datos.

Se puede utilizar con muchos y distintos orígenes de datos, con datos XML o para
administrar datos locales de la aplicación. El DataSet representa un conjunto
completo de datos que incluye tablas relacionadas y restricciones, así como
relaciones entre las tablas.

Conjunto de datos
Un conjunto de datos es una memoria caché desconectada de registros
recuperados de un origen de datos. Funciona como un almacén virtual de datos:
un conjunto de datos incluye una o más tablas basadas en las tablas de la base de
datos real y puede incluir información acerca de las relaciones entre estas tablas y
las restricciones para los datos que puede contener cada tabla.
Los datos del conjunto de datos suelen ser una versión muy reducida de lo que
hay en la base de datos. Sin embargo, puede trabajar con ellos igual que lo hace
con los datos reales.

Mientras se esté trabajando, se permanecerá desconectado de la base de datos, que


quedará libre para ejecutar otras tareas.

El conjunto de datos es un contenedor pasivo para los datos. Para extraer


realmente datos de la base de datos y (opcionalmente) escribirlos de nuevo, se
utilizan adaptadores de datos. Un adaptador de datos contiene uno o varios
comandos utilizados para llenar una única tabla del conjunto de datos y para
actualizar la tabla correspondiente de la base de datos.

Como el conjunto de datos es realmente una copia privada de los datos de la base
de datos, no reflejará necesariamente el estado actual de la base de datos, para ver
los últimos cambios realizados por otros usuarios, se puede actualizar el conjunto
de datos; llamando al método Fill correspondiente.

Una de las ventajas de utilizar conjuntos de datos es que los componentes pueden
intercambiarlos cuando lo necesiten. Por ejemplo, un objeto podría crear y llenar
un conjunto de datos y, a continuación, enviarlo a otro componente en otro punto
de la aplicación para que lo procese. Esta facilidad significa que los componentes
no necesitan consultar la base de datos de forma individual.

Un conjunto de datos de ADO.NET es una vista relacional de los datos que se


pueden representar en XML. El DataSet también puede mantener y recargar su
contenido como XML y su esquema como esquema de lenguaje de definición de
esquemas XML (XSD).

DataYiew
DataSet
t
DataSet

DataRow
Colección
DataRow Rows

DataRow

l
DataRow
Colección
DataRow Rows
DataAdapter

! DataRow

Objeto Conexión
En la siguiente ilustración se muestra el modelo de objetos DataSet.

DataSet

Data RelatlonCollect ,on

Extended Propert ,es

OataTableCollectlon
DataTable
Data RowCollect, on
DataVlew
DataRow

ChildRelat,ons

ParentRelat,ons

Constra,nts

DataColum nCollection
Extended Prope rt ,es DataColumn
PrimaryKey
ExtendedProperties

Modelo de datos del DataSet

Los métodos y objetos de un DataSet concuerdan con los del modelo de base de
datos relacional:

• DataTableCollection
• DataRelationCollection
• ExtendedProperties

D'aitai'ITaifoif �Coi f r �<ttf@rn


Un DataSet de ADO.NET contiene una colección de cero o más tablas
representadas por objetos DataTable. La DataTableCollection contiene todos los
objetos DataTable de un DataSet.

Un DataTable se define en el espacio de nombres System.Data y representa una


única tabla de datos residentes en memoria. Contiene una colección de columnas
representadas por una DataColumnCollection y restricciones representadas por
una ConstraintCollection que, juntas, definen el esquema de la tabla.

Un DataTable también contiene una colección de filas representadas por la


DataRowCollection, que contiene los datos de la tabla. Junto con su estado actual,
un DataRow conserva tanto la versión original como la actual para identificar los
cambios realizados en los valores almacenados en la fila.

D'aitailA<:f ffitf@r n C@H ��Af'@n1


Un DataSet contiene relaciones en su objeto DataRelationCollection. Una
relación, representada por el objeto DataRelation, asocia las filas de un DataTable
con las filas de otro DataTable. Es análogo a una ruta de unión que podría existir
entre las columnas de claves externas y principales en una base de datos
relacional. Un DataRelation identifica columnas coincidentes en dos tablas de un
DataSet. Las relaciones permiten pasar de una tabla a otra dentro de un mismo
DataSet.

Los elementos esenciales de un DataRelation son el nombre de la relación, el


nombre de las tablas relacionadas y las columnas relacionadas de cada tabla. Se
pueden establecer relaciones con más de una columna por tabla, para lo que debe
especificar una selección de objetos DataColumn como columnas clave.

Cuando se agrega una relación al DataRelationCollection, se puede agregar


también un UniqueKeyConstraint y un ForeignKeyConstraint para imponer
restricciones de integridad cuando se realicen cambios en los valores de las
columnas relacionadas.

EI't<md �cJP'nID)l�rí:f�§l
El DataSet (así como el DataTable y el DataColumn) tiene una propiedad
ExtendedProperties. ExtendedProperties es un PropertyCollection en el que se
puede colocar información personalizada, como la instrucción SELECT que sirve
para generar el conjunto de resultados, o una marca de fecha y hora de cuándo se
generaron los datos.

La colección ExtendedProperties se conserva con la información del esquema del


DataSet (así como el DataTable y el DataColumn).

Clasificación de los Datos


Los conjuntos de datos pueden tener tipo o no:

• Un conjunto de datos con tipo se deriva en primer lugar de la clase base


DataSet y, a continuación, utiliza la información de un archivo de
esquema XML (archivo .xsd) para generar una clase nueva. La
información del esquema (tablas, columnas, etc.) se genera y compila en
esta nueva clase de conjunto de datos como un conjunto de objetos y
propiedades de primera clase. Dado que una clase DataSet con tipo hereda
de la clase base DataSet, la clase con tipo asume toda la funcionalidad de
la clase DataSet y puede utilizarse con métodos que toman como
parámetro una instancia de una clase DataSet.
• Por el contrario, un conjunto de datos sin tipo no tiene el esquema
integrado correspondiente. Al igual que un conjunto de datos con tipo, un
conjunto de datos sin tipo contiene tablas, columnas, etc., pero sólo se
exponen como colecciones. No obstante, después de crear manualmente
las tablas y otros elementos de datos de un conjunto de datos sin tipo, se
puede exportar la estructura del conjunto de datos en forma de esquema
por medio del método WriteXmlSchema del conjunto de datos.

La clase de un conjunto de datos con tipo tiene un modelo de objetos en el que las
tablas y las columnas se convierten en objetos de primera clase del modelo de
objetos. Por ejemplo, si se trabaja con un conjunto de datos con tipo, puede hacer
referencia a una columna utilizando código similar al siguiente:

' Se accede a la columna "Nombre" de la primera fila


' de la tabla "Planes"
Dim s as string;
s = miDataSet.Planes(O).Nombre

Por el contrario, si se trabaja con un conjunto de datos sin tipo, el código sería:

' nota: casting necesario al trabajar sin tipos


s = miDataSet.Tables("Planes").Rows(0)("Nombre").ToString

El acceso con tipo además de ser más legible, es totalmente compatible con
IntelliSense en el editor de código de Visual Studio. El acceso a las tablas y las
columnas de un conjunto de datos con tipo también es algo más rápido en tiempo
de ejecución porque el acceso se determina en tiempo de compilación, no a través
de colecciones en tiempo de ejecución.

Clase DataSet
El DataSet es una clase que presenta las siguientes propiedades, métodos y
eventos:

Propiedades Descripción
CaseSensitive Obtiene o establece un valor que indica si las
comparaciones de cadena en los objetos DataTable
distinguen entre mayúsculas y minúsculas.
Container Obtiene el contenedor del componente.(Se hereda
de MarshalByValueComponent).
DataSetName Obtiene o establece el nombre del objeto DataSet
actual.
DefaultViewManager Obtiene una vista personalizada de los datos
incluidos en DataSet, lo que permite filtrar, buscar y
desplazarse mediante un DataViewManager
personalizado.
Propiedades Descripción
DesignMode Obtiene un valor que indica si el componente está
actualmente en modo de diseño.(Se hereda de
MarshalByValueComponent).
EnforceConstraints Obtiene o establece un valor que indica si se siguen
las reglas de restricción al intentar realizar cualquier
operación de actualización.
ExtendedProperties Obtiene la colección de la información
personalizada del usuario asociada a DataSet.
HasErrors Obtiene un valor que indica si hay errores en alguno
de los objetos DataTable de este DataSet.
Islnitialized Obtiene un valor que indica si el objeto DataSet
está inicializado.
Locale Obtiene o establece la información de configuración
regional que se utiliza para comparar cadenas de la
tabla.
Namespace Obtiene o establece el espacio de nombres del
objeto DataSet.
Prefix Obtiene o establece un prefijo XML que crea alias
para el espacio de nombres del objeto DataSet.
Relations Obtiene la colección de relaciones que vincula las
tablas y permite el desplazamiento desde las tablas
primarias a las secundarias.
RemotingFormat Obtiene o establece una enumeración
SerializationFormat para el objeto DataSet utilizado
durante el funcionamiento remoto.
SchemaSerializationMode Obtiene o establece una enumeración
SchemaSerializationMode para un objeto DataSet.
Site Reemplazado. Obtiene o establece una interfaz
System.ComponentModel.ISite para el objeto
DataSet.
Tables Obtiene la colección de tablas incluidas en DataSet.

Métodos Descripción
AcceptChanges Confirma todos los cambios realizados en este DataSet
desde que se ha cargado o desde la última vez que se ha
llamado a AcceptChanges.
Beginlnit Activa la inicialización de un objeto DataSet que se
emplea en un formulario o que utiliza otro componente. La
inicialización se produce en tiempo de ejecución.
Clear Borra cualquier dato de DataSet mediante el
procedimiento de quitar todas las filas de todas las tablas.
Métodos Descripción
Clone Copia la estructura de DataSet, incluidos todos los
esquemas, relaciones y restricciones de DataTable. No
copia ningún dato.
Copy Copia la estructura y los datos para este objeto DataSet.
CreateDataReader Sobrecargado. Devuelve un objeto DataTableReader con
un conjunto de resultados por cada DataTable, siguiendo la
misma secuencia con la que aparecen las tablas en la
colección Tables.
Dispose Sobrecargado. Libera los recursos utilizados por la clase
MarshalByValueComponent. (Se hereda de
MarshalByValueComponent).
Endlnit Finaliza la inicialización de un control DataSet que se
emplea en un formulario o que utiliza otro componente. La
inicialización se produce en tiempo de ejecución.
Equals Sobrecargado. Determina si dos instancias de Object son
iguales. (Se hereda de Object).
GetChanges Sobrecargado. Obtiene una copia del objeto DataSet que
contiene todos los cambios que se le han realizado desde la
última vez que se cargó o desde que se llamó a
AcceptChanges.
GetDataSetSchema
GetHashCode Sirve como función hash para un tipo concreto.
GetHashCode es apropiado para su utilización en
algoritmos de hash y en estructuras de datos como las
tablas hash. (Se hereda de Object).
GetObjectData Rellena un objeto de información de serialización con los
datos necesarios para serializar la clase DataSet.
GetService Obtiene el implementador de IServiceProvider. (Se hereda
de MarshalByValueComponent).
GetType Obtiene el objeto Type de la instancia actual. (Se hereda
de Object).
GetXrnl Devuelve la representación XML de los datos
almacenados en DataSet.
GetXrnlSchema Devuelve el esquema XML para la representación XML de
los datos almacenados en DataSet.
HasChanges Sobrecargado. Obtiene un valor que indica si DataSet
presenta cambios, incluyendo filas nuevas, eliminadas o
modificadas.
InferXrnlSchema Sobrecargado. Aplica el esquema XML al DataSet.
Load Sobrecargado. Rellena un objeto DataSet con valores de
un origen de datos utilizando la interfaz IDataReader
proporcionada.
Métodos Descripción
Merge Sobrecargado. Combina el objeto DataSet, el objeto
DataTable o la matriz de objetos DataRow que se
especifique en el objeto DataSet o DataTable actual.
ReadXml Sobrecargado. Lee esquema y datos XML en el objeto
DataSet.
ReadXmlSchema Sobrecargado. Lee un esquema XML en el DataSet.
ReferenceEquals Determina si las instancias de Object especificadas son la
misma instancia. (Se hereda de Object).
RejectChanges Deshace todos los cambios realizados en el DataSet desde
que se ha creado o desde que se ha llamado por última vez
a DataSet.AcceptChanges.
Reset Restablece el estado original del objeto DataSet. Las
subclases deben reemplazar a Reset para restaurar el
estado original de un DataSet.
ToString Devuelve una String que contiene el nombre de la clase
Component si la hay. Este método no debe reemplazarse.
(Se hereda de MarshalByValueComponent).
WriteXml Sobrecargado. Escribe datos XML y, de forma opcional, el
esquema del DataSet.
WriteXmlSchema Sobrecargado. Escribe la estructura del DataSet como un
esquema XML.

Eventos Descripción
Disposed Agrega un controlador de eventos para escuchar el evento
Disposed en el componente.(Se hereda de
MarshalByValueComponent).
Initialized Se produce después de inicializar DataSet.
MergeFailed Se produce cuando unos DataRow de origen y de destino
tienen el rmsmo valor de clave principal y
EnforceConstraints se establece en true.
Elegir un DataReader o un DataSet
A la hora de decidir si su aplicación debe utilizar un DataReader o un DataSet,
debe tener en cuenta el tipo de funcionalidad que su aplicación requiere. Use un
DataSet para hacer lo siguiente:

• Almacene datos en la memoria caché de la aplicación para poder


manipularlos. Si solamente necesita leer los resultados de una consulta, el
DataReader es la mejor elección.

• Utilizar datos de forma remota entre un nivel y otro o desde un servicio


WebXML.
• Interactuar con datos dinámicamente, por ejemplo para enlazar con un
control de formulariosWindows Forms o para combinar y relacionar datos
procedentes de varios orígenes.

• Realizar procesamientos exhaustivos de datos sin necesidad de tener una


conexión abierta con el origen de datos, lo que libera la conexión para que
la utilicen otros clientes.

Si no necesita la funcionalidad proporcionada por el DataSet, puede mejorar el


rendimiento de su aplicación si utiliza el DataReader para devolver sus datos de
sólo avance y de sólo lectura. Aunque el DataAdapter utiliza el DataReader para
rellenar el contenido de un DataSet, al utilizar el DataReader puede mejorar el
rendimiento porque no usará la memoria que utilizaría el DataSet, además de
evitar el procesamiento necesario para crear y rellenar el contenido de DataSet.

ADO.NET y XML

ADO.NET aprovecha la eficacia de XML para proporcionar acceso a datos sin


mantener una conexión abierta. ADO.NET fue diseñado teniendo en cuenta las
clases de XML incluidas en .NET Framework; ambos son componentes de una
única arquitectura.

ADO.NET y las clases de XML incluidas en .NET Framework convergen en el


objeto DataSet. El DataSet se puede llenar con datos procedentes de un origen
XML, ya sea éste un archivo o una secuencia XML. El DataSet se puede escribir
como XML compatible con el del Consorcio World Wide Web (W3C),
incluyendo su esquema como esquemaXSD (Lenguaje de definición de esquemas
XML), independientemente del origen de los datos incluidos en el DataSet. Puesto
que el formato nativo de serialización del DataSet esXML, es un medio excelente
para mover datos de un nivel a otro, por lo que el DataSet es idóneo para utilizar
datos y contextos de esquemas de interacción remota desde y hacia un servicio
WebXML.

XML
El Lenguaje de marcado extensible (XML) proporciona una forma de describir
datos estructurados. A diferencia de las etiquetas HTML, que se utilizan
básicamente para controlar la presentación y apariencia de los datos, las etiquetas
XML se utilizan para definir la estructura y los tipos de datos de los propios datos.

XML utiliza un conjunto de etiquetas para definir elementos de datos. Cada


elemento encapsula una parte de datos que puede ser muy simple o muy compleja.
Puede definir un conjunto ilimitado de etiquetasXML. Por ejemplo, podría definir
etiquetas XML para declarar partes de datos de un pedido, como el precio, los
impuestos, la dirección de envío, la dirección de facturación, etc. A medida que se
adopten etiquetas XML en toda la organización y a través de las organizaciones,
los datos de todos los tipos de almacenes de datos distintos serán más fáciles de
intercambiar y manipular.

XML es una simple plataforma independiente y un estándar muy utilizado. La


ventaja de XML sobre HTML es que separa la interfaz de usuario de los datos
estructurados. Esta separación de datos de la presentación habilita la integración
de datos desde diversos orígenes. Es posible convertir información de clientes,
pedidos, resultados de investigaciones, pagos de facturas, historiales clínicos,
datos de catálogos y mucha otra información a XML.

XML frente a HTML


A continuación se presentan algunos puntos importantes que se deben tener en
cuenta acerca de la relación entre XML y HTML:

• XML no es un sustituto de HTML; de hecho, XML se puede considerar


como un complemento de HTML. XML y HTML tienen objetivos
distintos: HTML está diseñado para mostrar datos y se centra en la
apariencia de los datos, mientras que XML está diseñado para describir
datos y está centrado en lo que son los datos.

• Al igual que HTML, XML no hace nada más. Mientras que es posible
utilizar las etiquetas XML para describir la estructura de un elemento
como un pedido, este lenguaje no contiene ningún código que se pueda
utilizar para enviar ese pedido, procesarlo o asegurarse de que está
completo. Otras personas deben escribir código para hacer realmente estas
cosas con sus datos en formato XML.

• A diferencia del lenguaje HTML, el autor de un esquema o documento


define las etiquetas XML y éstas son ilimitadas. Las etiquetas HTML están
predefinidas; los autores de HTML sólo pueden utilizar etiquetas
compatibles con el estándar HTML actual.

UsosdeXML
XML es una forma extremadamente flexible de transferir datos. A continuación se
presentan ejemplos donde se puede utilizar XML:

• Un documento normal.

• Un registro estructurado, como un registro de citas o un pedido.

• Aplicaciones Web de Internet o intranet que mueven datos .

• Un objeto con datos, como el formato persistente de un objeto o control


ActiveX.

• Un registro de datos, como el conjunto de resultados de una consulta.


• Una presentación gráfica, como una interfaz de usuario de la aplicación.

• Vínculos entre información y personas del Web.

• Comentarios de código, que se pueden documentar con XML.

• Documentos de descubrimiento utilizados para buscar servicios Web


XML.

A continuación se enumeran diversas ventajas que XML tiene sobre otros


formatos a la hora de almacenar información:

• Los formatos XML se basan en texto, que lo hacen más legible, fácil de
documentar y, a veces, más fácil de depurar.

• Los documentos XML pueden utilizar mucha de la infraestructura ya


creada para HTML, incluido el protocolo HTTP y algunos exploradores.
HTIP permite que se transfiera XML mediante firewalls.

• El análisis XML está perfectamente definido y ampliamente


implementado, lo que posibilita la recuperación de información de
documentos XML en diversos entornos.

• Las aplicaciones pueden confiar en los analizadores de XML para realizar


alguna validación estructural, así como en la comprobación de tipo de
datos (cuando se utilizan esquemas).

• XML se crea en una base Unicode, lo que facilita la creación de


documentos internacionalizados.

No obstante, XML no es adecuado para todas las situaciones. Los documentos


XML tienden a ser más detallados que los formatos binarios a los que sustituyen.
Consumen más ancho de banda de red y espacio de almacenamiento o requieren
más tiempo de procesador para la compresión. El análisis XML puede ser más
lento que el análisis muy optimizado de los formatos binarios y puede requerir
más memoria. No obstante, un cuidado diseño de aplicaciones puede evitar
algunos de estos problemas.

Validar documentos XML


Para validar los documentos XML que contienen los datos y la estructura
deseados, debe asociar un esquema XML al documento XML. Los esquemas
XML son las reglas que definen cómo se estructuran los elementos y atributos
para formar documentos XML. Puede compartir esquemas entre organizaciones
para hacer más simple la transferencia y el proceso de datos compartidos.
Mostrar datos XML
Se pueden utilizar varias formas para mostrar (o presentar) datos XML.

Incluso existen mecanismos de enlace de datos que se pueden utilizar junto con
hojas de estilos para organizar datos XML en una presentación visual y para
agregar interactividad.

He aquí algunos métodos, entre otros, para mostrar XML:

• XSLT: Lenguaje de hoja de estilos extensible

• CSS: Hojas de estilos en cascada

• Microsoft Internet Explorer

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy