ADO.NET es un conjunto de clases que exponen servicios de acceso a datos para programadores de .NET Framework. ADO.NET ofrece abundancia de componentes para la creación de aplicaciones de uso compartido de datos distribuidas.
2. ADO.NET
DEFINICIÓN:
ADO.NET es un conjunto de componentes del software que pueden ser usados por los
programadores para acceder a datos y a servicios de datos. Es parte de la biblioteca de
clases base que están incluidas en el Microsoft .NET Framework. Es comúnmente
usado por los programadores para acceder y para modificar los datos almacenados en
un Sistema Gestor de Bases de Datos Relacionales, aunque también puede ser usado
para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado
como una evolución de la tecnología ActiveX Data Objects (ADO), pero fue cambiado
tan extensivamente que puede ser concebido como un producto enteramente nuevo.
3. Información General:
ADO.NET proporciona acceso coherente a orígenes de datos como SQL Server y
XML, así como a orígenes de datos expuestos mediante OLE DB y ODBC. Las
aplicaciones de consumidor que comparten datos pueden utilizar ADO.NET para
conectar a estos orígenes de datos y recuperar, controlar y actualizar los datos
contenidos.
ADO.NET separa el acceso de la manipulación de los datos en componentes discretos
que se pueden utilizar por separado o conjuntamente. ADO.NET incluye proveedores
de datos .NET Framework para conectarse a una base de datos, ejecutar comandos y
recuperar resultados. Los resultados, o bien, se procesan directamente, o bien, se
colocan en un objeto DataSet de ADO.NET con el fin de exponerlos al usuario para un
propósito específico, combinados con datos de varios orígenes, o de pasarlos entre
niveles. El objeto DataSet de ADO.NET también puede utilizarse independientemente
de un proveedor de datos .NET Framework para administrar datos que son locales de
la aplicación o que proceden de un origen XML.
4. Las clases de ADO.NET se encuentran en System.Data.dll y se integran con las clases
de XML incluidas en System.Xml.dll.
ADO.NET proporciona funcionalidad a los desarrolladores que escriben código
administrado similar a la funcionalidad que los objetos ADO (ActiveX Data Objects)
proporcionan a los desarrolladores de modelo de objetos componentes (COM) nativo.
Se recomienda utilizar ADO.NET, y no ADO, para obtener acceso a datos de
aplicaciones .NET.
ADO.NET proporciona el método más directo de acceso a datos de .NET Framework.
Para obtener una abstracción de nivel más alto que permita que las aplicaciones
funcionen en un modelo conceptual en vez de en el modelo de almacenamiento
subyacente, vea ADO.NET Entity Framework.
5. ARQUITECTURA DE ADO.NET:
Tradicionalmente, el procesamiento de datos ha dependido principalmente de un
modelo de dos niveles basado en una conexión. A medida que aumenta el uso que
hace el procesamiento de datos de arquitecturas de varios niveles, los programadores
están pasando a un enfoque sin conexión con el fin de proporcionar una mejor
escalabilidad a sus aplicaciones.
ADO.NET consiste en dos partes primarias:
DATA PROVIDER:
Estas clases proporcionan el acceso a una fuente de datos, como Microsoft SQL
Server y Oracle. Cada fuente de datos tiene su propio conjunto de objetos del
proveedor, pero cada uno tienen un conjunto común de clases de utilidad:
Connection: Proporciona una conexión usada para comunicarse con la fuente de
datos. También actúa como Abstract Factory para los objetos command.
Command: Usado para realizar alguna acción en la fuente de datos, como lectura,
actualización, o borrado de datos relacionales.
6. Parameter: Describe un simple parámetro para un command. Un ejemplo común es un
parámetro para ser usado en un procedimiento almacenado.
DataAdapter: "Puente" utilizado para transferir data entre una fuente de datos y un
objeto DataSet (ver abajo).
DataReader: Es una clase usada para procesar eficientemente una lista grande de
resultados, un registro a la vez.
Los proveedores de datos .NET Framework son componentes diseñados explícitamente
para la manipulación de datos y el acceso rápido a datos de solo lectura y solo avance.
El objeto Connection proporciona conectividad a un origen de datos. El objeto
Command permite tener acceso a comandos de base de datos para devolver datos,
modificar datos, ejecutar procedimientos almacenados y enviar o recuperar información
sobre parámetros. DataReader proporciona un flujo de datos de alto rendimiento desde
el origen de datos. Por último, el objeto DataAdapter proporciona el puente entre el
objeto DataSet y el origen de datos. DataAdapter utiliza objetos Command para ejecutar
comandos SQL en el origen de datos tanto para cargar DataSet con datos y reconciliar
en el origen de datos los cambios aplicados a los datos incluidos en el DataSet.
7. Para obtener más información, vea Proveedores de datos .NET Framework y
Recuperación y modificación de datos en ADO.NET.
DATASETS:
Los objetos DataSets, son un grupo de clases que describen una simple base de
datos relacional en memoria, fueron la estrella del show en el lanzamiento inicial
(1.0) del Microsoft .NET Framework. Las clases forman una jerarquía de
contención:
• Un objeto DataSet representa un esquema (o una base de datos entera o un
subconjunto de una). Puede contener las tablas y las relaciones entre esas tablas.
• Un objeto DataTable representa una sola tabla en la base de datos. Tiene un
nombre, filas, y columnas.
• Un objeto DataView "se sienta sobre" un DataTable y ordena los datos (como una
cláusula "order by" de SQL) y, si se activa un filtro, filtra los registros (como una
cláusula "where" del SQL). Para facilitar estas operaciones se usa un índice en
memoria. Todas las DataTables tienen un filtro por defecto, mientras que pueden
8. ser definidos cualquier número de DataViews adicionales, reduciendo la interacción
con la base de datos subyacente y mejorando así el desempeño.
• Un DataColumn representa una columna de la tabla, incluyendo su nombre y tipo.
• Un objeto DataRow representa una sola fila en la tabla, y permite leer y actualizar los
valores en esa fila, así como la recuperación de cualquier fila que esté relacionada
con ella a través de una relación de clave primaria - clave extranjera.
• Un DataRowView representa una sola fila de un DataView, la diferencia entre un
DataRow y el DataRowView es importante cuando se está interactuando sobre un
resultset.
• Un DataRelation es una relación entre las tablas, tales como una relación de clave
primaria - clave ajena. Esto es útil para permitir la funcionalidad del DataRow de
recuperar filas relacionadas.
• Un Constraint describe una propiedad de la base de datos que se debe cumplir,
como que los valores en una columna de clave primaria deben ser únicos. A medida
que los datos son modificados cualquier violación que se presente causará
excepciones.
9. Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades
Connection y Command que han sido iniciados. Sin embargo, un DataSet puede
guardar su contenido a XML (opcionalmente con un esquema XSD), o llenarse a sí
mismo desde un XML, haciendo esto excepcionalmente útil para los servicios web,
computación distribuida, y aplicaciones ocasionalmente conectadas desconectados.
El DataSet de ADO.NET es una representación de datos residente en memoria que
provee un modelo de programación relacional consistente e independiente al origen de
datos que contiene. Un DataSet representa un conjunto completo de datos, incluyendo
las tablas que contienen, ordenan y restringen los datos, así como las relaciones entre
las tablas.
Hay varias maneras de trabajar con un DataSet, que se pueden aplicar de forma
independiente o conjuntamente. Puede realizar lo siguiente:
• Crear mediante programación una DataTable, DataRelation y una Constraint en un
DataSet y rellenar las tablas con datos.
• Llenar el DataSet con tablas de datos de un origen de datos relacional existente
mediante DataAdapter.
10. • Cargar y hacer persistente el contenido de DataSet mediante XML. Para obtener
más información, consulta Utilizar XML en un DataSet.
También se puede transportar un DataSet fuertemente tipado mediante un servicio Web
XML. El diseño del DataSet lo convierte en idóneo para el transporte de datos mediante
servicios Web XML. Para obtener información general sobre servicios Web XML, vea
XML Web Services Overview. Para ver un ejemplo de cómo utilizar un DataSet de un
servicio Web XML, vea Consumir DataSet a partir de un servicio Web XML.
El DataSet de ADO.NET está expresamente diseñado para el acceso a datos
independientemente de cualquier origen de datos. Como resultado, se puede utilizar
con múltiples y distintos orígenes de datos, con datos XML o para administrar datos
locales de la aplicación. DataSet contiene una colección de uno o más objetos
DataTable formados por filas y columnas de datos, así como claves principales, claves
externas, restricciones e información de la relación sobre los datos incluidos en los
objetos DataTable. Para obtener más información, consulta DataSets, DataTables y
DataViews.
11. En el diagrama siguiente se ilustra la relación entre un proveedor de datos .NET
Framework y un DataSet.
12. Los conjuntos definen relaciones N:N entre registros: varios propietarios, varios
miembros. Un registro puede ser un propietario de varios conjuntos, y miembro en
cualquier número de conjuntos.
El modelo en red es una generalización del modelo jerárquico, en tanto está construido
sobre el concepto de múltiples ramas (estructuras de nivel inferior) emanando de uno o
varios nodos (estructuras de nivel alto), mientras el modelo se diferencia del modelo
jerárquico en que las ramas pueden estar unidas a múltiples nodos. El modelo de red
es capaz de representar la redundancia en datos de una manera más eficiente que en
el modelo jerárquico.
Las operaciones del modelo de red se realizan por de navegación: un programa
mantiene la posición actual, y navega entre registros siguiendo las relaciones entre
ellos. Los registros también pueden ser localizados por valores claves.
Aunque no es una característica esencial del modelo, las bases de datos en red
implementan sus relaciones mediante punteros directos al disco. Esto da una
velocidad de recuperación excelente, pero penaliza las operaciones de carga y
reorganización.
13. CLASES DE ADO .NET:
System.Data: clases genéricas de datos de ADO .NET, integra la gran mayoría de
clases que habilitan el acceso a los datos de la arquitectura .NET.
System.Data.SqlClient: clases del proveedor de datos de SQL Server, permiten el
acceso a proveedores SQL Server en su versión 7.0 y superior.
System.Data.OleDb: clases del proveedor de datos de OleDB, permiten el acceso a
proveedores .NET que trabajan directamente contra controladores basados en los
ActiveX de Microsoft.
System.Data.SqlTypes: definición de los tipos de datos de SQL Server, proporciona la
encapsulación en clases de todos los tipos de datos nativos de SQL Server y sus
funciones de manejo de errores, ajuste y conversión de tipos, etc.
System.Data.Common: clases base, reutilizables de ADO .NET, proporcionan la
colección de clases necesarias para acceder a una fuente de datos (como por ejemplo
una Base de Datos).
14. DataSet: almacén de datos por excelencia en ADO .NET. Representa una base de datos
desconectada del proveedor de datos. Almacena tablas y sus relaciones.
DataTable: un contenedor de datos. Estructurado como un conjunto de filas (DataRow)
y columnas (DataColumn).
DataRow: registro que almacena n valores. Representación en ADO .NET de una fila de
una tabla de la base de datos.
DataColumn: contiene la definición de una columna. Metadatos y datos asociados a su
dominio.
DataRelation: enlace entre dos o más columnas iguales de dos o más tablas.
Constraint: reglas de validación de las columnas de una tabla.
DataColumnMapping: vínculo lógico existente entre una columna de un objeto del
DataSet y la columna física de la tabla de la base de datos.
DataTableMapping: vínculo lógico existente entre una tabla del DataSet y la tabla física
de la base de datos.
15. EJEMPLOS DE ADO.NET:
Los listados de código de este tema muestran cómo recuperar datos de una base de
datos utilizando las tecnologías ADO.NET siguientes:
Proveedores de datos ADO.NET:
• SqlClient (System.Data.SqlClient)
• OleDb (System.Data.OleDb)
• Odbc (System.Data.Odbc)
• OracleClient (System.Data.OracleClient)
A continuación, se muestra una sencilla aplicación de ADO.NET que devuelve resultados
desde un origen de datos y los escribe en la consola o en el símbolo del sistema.
a)
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class Program
Public Shared Sub Main()
16. Dim connectionString As String = GetConnectionString()
Dim queryString As String = _
"SELECT CategoryID, CategoryName FROM dbo.Categories;"
Using connection As New SqlConnection(connectionString)
Dim command As SqlCommand = connection.CreateCommand()
command.CommandText = queryString
Try
connection.Open()
Dim dataReader As SqlDataReader = _
command.ExecuteReader()
Do While dataReader.Read()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
dataReader(0), dataReader(1))
Loop
dataReader.Close()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
End Sub
17. Private Shared Function GetConnectionString() As String
' To avoid storing the connection string in your code,
' you can retrieve it from a configuration file.
Return "Data Source=(local);Initial Catalog=Northwind;" _
& "Integrated Security=SSPI;"
End Function
End Class
b)
Imports System
Imports System.Data
Imports System.Data.SqlClientPublic Class Sample
Imports Microsoft.VisualBasic
Public Class Sample
Public Shared Sub Main()
Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;" & _
"Integrated Security=SSPI;Initial Catalog=northwind")
Dim catCMD As SqlCommand = nwindConn.CreateCommand()
catCMD.CommandText = "SELECT CategoryID, CategoryName FROM Categories"
nwindConn.Open()
18. Dim myReader As SqlDataReader = catCMD.ExecuteReader()
Do While myReader.Read()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0),
myReader.GetString(1))
Loop
myReader.Close()
nwindConn.Close()
End Sub
End Class
19. RESUMEN:
ADO.NET es la tecnología .NET para interactuar con fuentes de datos. Tiene varios
Data Providers, que permiten la comunicación con diferentes fuentes de datos,
dependiendo de los protocolos que utilizan o de la base de datos.
Independientemente de cuál sea el proveedor de datos que utilice, utilizará un
conjunto similar de objetos para interactuar con un origen de datos. El objeto
SqlConnection le permite administrar una conexión a un origen de datos. Los objetos
SqlCommand le permiten hablar con una fuente de datos y enviar comandos a ella.
Para tener acceso rápido de sólo lectura a datos, utilice el SqlDataReader. Si
deseamos trabajar con datos desconectados, utilizaremos un DataSet e
implementaremos la lectura y escritura desde el origen de datos con un
SqlDataAdapter.
20. SUMMARY:
ADO.NET is .NET technology for interacting with data sources. It has several Data
Providers, which allow communication with different data sources, depending on the
protocols they use or the database. Regardless of which data provider you use, you
will use a similar set of objects to interact with a data source. The SqlConnection
object allows you to manage a connection to a data source. SqlCommand objects
allow you to talk to a data source and send commands to it. For quick read-only
access to data, use the SqlDataReader. If we want to work with disconnected data,
we will use a DataSet and implement the read and write from the data source with a
SqlDataAdapter.
21. RECOMENDACIONES:
La programación en ADO.NET, ha despertado gran interés y muchas personas se están iniciando en
ella. A pesar de tratarse de una tecnología que facilita enormemente la programación en relación con
las bases de datos, hay algunas dificultades que pueden retrasar el aprendizaje del programador
principiante, entre ellas, aprender el uso adecuado del lenguaje SQL para realizar las tareas
deseadas.
CONCLUSIONES:
ADO.NET es un conjunto de clases que exponen servicios de acceso a datos para programadores de
.NET Framework. 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 front-end y objetos empresariales de nivel
medio que utilizan aplicaciones, herramientas, lenguajes o exploradores de Internet.
En conclusión ADO.NET es un conjunto de los componentes del software que pueden ser usados por
los programadores para accesar a datos y que viene a facilitar mucho la vida del programador.
22. APRECIACIÓN DEL EQUIPO:
Sabemos que ADO.NET nos permite interactuar con diferentes tipos de fuentes de datos y diferentes
tipos de bases de datos. Sin embargo, no hay un solo conjunto de clases que le permitan lograr esto
universalmente. Dado que diferentes fuentes de datos exponen diferentes protocolos, necesitamos
una forma de comunicarnos con la fuente de datos correcta usando el protocolo correcto. Algunas
fuentes de datos más antiguas utilizan el protocolo ODBC, muchas fuentes de datos más recientes
usan el protocolo OleDb y hay más fuentes de datos todos los días que permiten comunicarse con
ellos directamente a través de las bibliotecas de clases .NET ADO.NET.
ADO.NET proporciona una forma relativamente común de interactuar con fuentes de datos, pero
viene en diferentes conjuntos de bibliotecas para cada modo en que puede hablar con un origen de
datos. Estas bibliotecas se llaman Proveedores de Datos y usualmente se nombran para el tipo de
protocolo o fuente de datos con el que pueden interactuar. La Tabla 1 enumera algunos proveedores
de datos bien conocidos, el prefijo API que utilizan y el tipo de origen de datos con el que permiten
interactuar.