ADO.NET




         


ADO.NET

1.   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.

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. 
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. 

2.   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.
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. 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 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.
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.
· 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.
En el diagrama siguiente se ilustra la relación entre un proveedor de datos .NET Framework y un DataSet.


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).
·    System.Data.Internal: integra el conjunto de clases internas de las que se componen los proveedores de datos. Dentro del espacio de nombres System.Data encontramos las clases compartidas que constituyen el eje central de ADO.NET, y son las siguientes:
·     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.

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()

        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

    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.SqlClient
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()
 
    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

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.

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.

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. 

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.

LINKOGRAFÍA:
ü  https://msdn.microsoft.com/es-es/library/e80y5yhx(v=vs.110).aspx
ü  https://es.wikipedia.org/wiki/ADO.NET
ühttps://msdn.microsoft.com/es-es/library/9hyxa35z(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
ü  https://msdn.microsoft.com/es-es/library/27y4ybxw(v=vs.110).aspx
ü  http://csharp-station.com/Tutorial/AdoDotNet/Lesson01
ü  https://es.slideshare.net/LisbethOcaaBueno/adonet-80410969





Comentarios

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS