ADO .NET .NET
Temario Introducción Lenguajes .NET ASP .NET ADO .NET Programación en componentes Aplicaciones windows XML y Web Services
Introducción ADO.NET es la más reciente en una larga línea de tecnologías de acceso a bases de datos que empezó con la interfaz de programación de aplicaciones (API) de conectividad abierta para bases de datos (ODBC)  .NET Framework incluye esta nueva tecnología de acceso a datos, la cual es una mejora en la evolución de Microsoft® ActiveX® Data Objects (ADO)
ADO.NET está diseñada para aplicaciones distribuidas que puedan necesitar operar en el Web  Como parte de .NET Framework, Microsoft ofrece una Biblioteca de clase del marco de trabajo, el cual cubre todas las APIs existentes de Windows y más Entre éstas se encuentran los modelos de objeto XML y ADO que se han integrado en un grupo de clases llamado ADO.NET
ADO.NET no es una revisión de ADO sino una forma nueva de manipular datos que se basa en datos desconectados  XML ADO no proporciona todas las funciones necesarias para desarrollar aplicaciones Web robustas y escalables cuando se usa desde Active Server Pages (ASP) Esto es porque el modelo de objetos ADO fomenta las operaciones orientadas a conexiones
Arquitectura ADO.NET
Datasets desconectados ADO.NET ha sido diseñado para funcionar con Datasets desconectados Las aplicaciones están conectadas a la fuente de datos sólo lo suficiente para recolectar y actualizar datos ADO.NET proporciona una interfaz de acceso a datos para comunicarse con fuentes de datos que cumplen con OLE DB Las aplicaciones de uso compartido de datos pueden usar ADO.NET para conectarse a estas fuentes de datos y recuperar, manipular y actualizar datos
Un Dataset es una copia en la memoria de los datos de la base de datos.  Un Dataset puede contener datos de cualquier cantidad de tablas o vistas de bases de datos.  El Dataset constituye una vista desconectada de la base de datos porque existe en la memoria sin una conexión activa a una base de datos que contenga las tablas o vistas correspondientes
Un Dataset es como una base relacional miniatura dentro de la memoria. Contiene varias tablas, cada una de las cuales corresponde a una tabla o vista En aplicaciones con n niveles, normalmente los datos se pasan desde la BD a un objeto de negocios de nivel medio y luego a la interfaz Para acomodar el intercambio de datos, ADO.NET usa persistencia y transmisión con base en XML
 
ADO vs ADO.NET ADO.NET ofrece dos depósitos de datos, el DataReader y el DataSet DataReader es equivalente a un RecordSet en ADO de sólo lectura y de sólo hacia delante La analogía más cercana de un DataSet es un RecordSet desconectado, aunque es mucho más que eso ADO.NET no tiene equivalente a RecordSets conectados y actualizables de ADO
La clase DataSet tiene una colección de tablas y una colección de relaciones Cada tabla en la colección de tablas tiene una colección de columnas y una colección de filas que representan los datos que se mantienen en el DataSet Estos objetos representan el esquema del DataSet El DataSet puede estar serializado o no hacia o desde XML.
Recorrido de datos Los métodos que utiliza ADO.NET para leer o modificar datos difiere de los métodos de programación que usa ADO En ADO, se explora de manera secuencial a través de las filas del RecordSet En ADO.NET, se emplea un paradigma de navegación, moviéndose de una fila de una tabla de datos a la fila o filas correspondientes de otra tabla de datos siguiendo la relación
XML como formato datos universal ADO.NET usa XML para garantizar la interoperabilidad de plataformas Cuando ocurre la transmisión a través de XML, el receptor ya no tiene que ser un objeto COM El componente receptor ya no tiene ninguna restricción arquitectónica Cualquier componente de software puede compartir datos ADO.NET siempre y cuando use el mismo esquema XML
Modelo de objetos ADO.NET Sin importar si escribe Web Forms, Windows Forms o servicios Web XML, si cuenta con una fuente de datos en su sistema, ADO.NET siempre presenta el mismo conjunto de clases Existen dos partes principales del modelo ADO.NET: Los Proveedores de datos .NET y los objetos ADO.NET
Proveedores de datos .NET Se utiliza para conectarse a bases de datos, ejecutar comandos y recuperar resultados  El Proveedor de datos .NET está diseñado para ser ligero, creando una capa mínima entre la fuente de datos y su código  Cuatro objetos centrales componen un Proveedor de datos .NET: Conexión, Comando, Lector de datos y Adaptador de datos
Conexión   Establece una conexión a una fuente específica de datos.   Comando   Ejecuta un comando en una fuente de datos. Expone Parámetros y puede enumerar una Transacción desde una Conexión.   Lector de datos   Lee un flujo sólo hacia delante y sólo de lectura de datos desde una fuente de datos.   Adaptador de datos   Llena un Conjunto de datos y resuelve actualizaciones con la fuente de datos
Microsoft SQL Server .NET Data Provider  Utiliza su propio protocolo para comunicarse con SQL Server sin agregar un OLE DB o una capa de ODBC Para usarlo necesita incluir el espacio de nombre System.Data.SqlClient  [Visual Basic]  Imports System.Data.SqlClient  [C#]  using System.Data.SqlClient;
Proveedor de datos .NET de OLE DB  Utiliza OLE DB nativo a través de interoperación COM  [Visual Basic]  Imports System.Data.OleDb  [C#]  using System.Data.OleDb ;
Objetos de ADO.NET Tiene algunos de los mismos objetos que ADO (como Connection y Command) Introduce objetos nuevos, como DataSets, DataReaders y DataSetCommands
Objetos de conexión: SqlConnection y OleDBConnection Agregue una referencia a System.Data.SqlClient: Imports System.Data.SqlClient   Cree un objeto SqlConnection al pasar la fuente de datos, la información de seguridad y el catálogo inicial al constructor: Dim nwindConn As SqlConnection =  New SqlConnection( "Data Source=localhost;& Integrated Security=SSPI; " & "Initial Catalog=northwind")   Abra la conexión: nwindConn.Open()
Objetos de comando Representan un comando que se ejecutará contra una fuente de datos.  Si el comando que se ejecuta devuelve filas de datos, puede utilizar DataReader Para comandos SQL, usar SqlDataReader
Métodos de comando ExecuteReader:  Ejecuta una consulta SQL o un procedimiento almacenado y devuelve un objeto DataReader  ExecuteNonQuery:  Ejecuta una consulta SQL o un procedimiento almacenado y no regresa registros.  ExecuteScalar:  Recupera un valor único desde una base de datos.  nwindCmd.CommandText = "Select count(*) as " & "NumberOfRegions from region"; Int count = (int) nwindCmd.ExecuteScalar();
Ejecución de comandos SQL Cree un objeto de tipo SqlCommand: Dim nwindCmd As SqlCommand =  New SqlCommand ("Select * from Customers", nwindConn)   Ejecute el método ExecuteReader y almacene el flujo de filas en un objeto SQLReader: Dim nwindReader As SqlDataReader =    nwindCmd.ExecuteReader(CommandBehavior.CloseConnection) While nwindReader.Read() MsgBox(nwindReader.GetString(0)) End While nwindReader.Close() nwindConn.Close()
Objetos DataReader Está diseñado para producir un flujo de sólo lectura y sólo hacia delante desde la base de datos El DataReader recupera lotes de registros y los coloca en la memoria caché, recuperando más registros según los necesite Un DataReader se devuelve después de ejecutar un comando Trabaja de manera similar a un Conjunto de registros en ADO, permitiéndole simplemente recorrer los registros
Ejemplo Dim nwindReader As  SqlDataReader =  nwindCmd.ExecuteReader(CommandBehavior.CloseConnection) While nwindReader.Read() MsgBox(nwindReader.GetString(0)) End While nwindReader.Close()
Objetos DataSet Es una representación de datos que residen en la memoria que proporciona un modelo consistente de programación relacional sin importar la fuente de datos. Como resultado, se puede utilizar con varias fuentes de datos y datos XML, o se puede utilizar para administrar datos locales de la aplicación.  El DataSet contiene una colección de uno o más objetos DataTable conformados de filas y columnas de datos Los datos están en las filas
Objetos DataAdapter Este objeto permite la recuperación y guardado de datos entre un objeto DataSet y el almacén de datos fuente Es responsable de jalar los datos desde el almacén físico y colocarlos en las tablas y relaciones de datos El objeto DataAdapter también es responsable de transmitir cualquier actualización, inserción o eliminación de la base de datos física
SqlConnection  nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");  SqlCommand selectCMD = new SqlCommand("SELECT CustomerID, CompanyName FROM Customers", nwindConn);  selectCMD.CommandTimeout = 30;  SqlDataAdapter custDA = new SqlDataAdapter(); custDA.SelectCommand = selectCMD;  nwindConn.Open();  DataSet custDS = new DataSet();  custDA.Fill(custDS, "Customers");  nwindConn.Close();
Objetos DataView Se usan para mostrar los datos retenidos en un DataSet Proporcionan una vista personalizada de tablas de datos Son el equivalente de RecordSets desconectados de ADO Se pueden usar para especificar criterios de filtrado y clasificación y para buscar y editar un DataSet  Se pueden crear cualquier número de DataViews para la misma tabla
Cada DataTable en un DataSet tiene una propiedad DefaultView  Dim dv As DataView dv = ds.Tables("Authors").DefaultView   También se pueden filtrar datos  dv = New DataView (ds.Tables("Authors")) dv.RowFilter = "state = 'CA'"

ADO

  • 1.
  • 2.
    Temario Introducción Lenguajes.NET ASP .NET ADO .NET Programación en componentes Aplicaciones windows XML y Web Services
  • 3.
    Introducción ADO.NET esla más reciente en una larga línea de tecnologías de acceso a bases de datos que empezó con la interfaz de programación de aplicaciones (API) de conectividad abierta para bases de datos (ODBC) .NET Framework incluye esta nueva tecnología de acceso a datos, la cual es una mejora en la evolución de Microsoft® ActiveX® Data Objects (ADO)
  • 4.
    ADO.NET está diseñadapara aplicaciones distribuidas que puedan necesitar operar en el Web Como parte de .NET Framework, Microsoft ofrece una Biblioteca de clase del marco de trabajo, el cual cubre todas las APIs existentes de Windows y más Entre éstas se encuentran los modelos de objeto XML y ADO que se han integrado en un grupo de clases llamado ADO.NET
  • 5.
    ADO.NET no esuna revisión de ADO sino una forma nueva de manipular datos que se basa en datos desconectados XML ADO no proporciona todas las funciones necesarias para desarrollar aplicaciones Web robustas y escalables cuando se usa desde Active Server Pages (ASP) Esto es porque el modelo de objetos ADO fomenta las operaciones orientadas a conexiones
  • 6.
  • 7.
    Datasets desconectados ADO.NETha sido diseñado para funcionar con Datasets desconectados Las aplicaciones están conectadas a la fuente de datos sólo lo suficiente para recolectar y actualizar datos ADO.NET proporciona una interfaz de acceso a datos para comunicarse con fuentes de datos que cumplen con OLE DB Las aplicaciones de uso compartido de datos pueden usar ADO.NET para conectarse a estas fuentes de datos y recuperar, manipular y actualizar datos
  • 8.
    Un Dataset esuna copia en la memoria de los datos de la base de datos. Un Dataset puede contener datos de cualquier cantidad de tablas o vistas de bases de datos. El Dataset constituye una vista desconectada de la base de datos porque existe en la memoria sin una conexión activa a una base de datos que contenga las tablas o vistas correspondientes
  • 9.
    Un Dataset escomo una base relacional miniatura dentro de la memoria. Contiene varias tablas, cada una de las cuales corresponde a una tabla o vista En aplicaciones con n niveles, normalmente los datos se pasan desde la BD a un objeto de negocios de nivel medio y luego a la interfaz Para acomodar el intercambio de datos, ADO.NET usa persistencia y transmisión con base en XML
  • 10.
  • 11.
    ADO vs ADO.NETADO.NET ofrece dos depósitos de datos, el DataReader y el DataSet DataReader es equivalente a un RecordSet en ADO de sólo lectura y de sólo hacia delante La analogía más cercana de un DataSet es un RecordSet desconectado, aunque es mucho más que eso ADO.NET no tiene equivalente a RecordSets conectados y actualizables de ADO
  • 12.
    La clase DataSettiene una colección de tablas y una colección de relaciones Cada tabla en la colección de tablas tiene una colección de columnas y una colección de filas que representan los datos que se mantienen en el DataSet Estos objetos representan el esquema del DataSet El DataSet puede estar serializado o no hacia o desde XML.
  • 13.
    Recorrido de datosLos métodos que utiliza ADO.NET para leer o modificar datos difiere de los métodos de programación que usa ADO En ADO, se explora de manera secuencial a través de las filas del RecordSet En ADO.NET, se emplea un paradigma de navegación, moviéndose de una fila de una tabla de datos a la fila o filas correspondientes de otra tabla de datos siguiendo la relación
  • 14.
    XML como formatodatos universal ADO.NET usa XML para garantizar la interoperabilidad de plataformas Cuando ocurre la transmisión a través de XML, el receptor ya no tiene que ser un objeto COM El componente receptor ya no tiene ninguna restricción arquitectónica Cualquier componente de software puede compartir datos ADO.NET siempre y cuando use el mismo esquema XML
  • 15.
    Modelo de objetosADO.NET Sin importar si escribe Web Forms, Windows Forms o servicios Web XML, si cuenta con una fuente de datos en su sistema, ADO.NET siempre presenta el mismo conjunto de clases Existen dos partes principales del modelo ADO.NET: Los Proveedores de datos .NET y los objetos ADO.NET
  • 16.
    Proveedores de datos.NET Se utiliza para conectarse a bases de datos, ejecutar comandos y recuperar resultados El Proveedor de datos .NET está diseñado para ser ligero, creando una capa mínima entre la fuente de datos y su código Cuatro objetos centrales componen un Proveedor de datos .NET: Conexión, Comando, Lector de datos y Adaptador de datos
  • 17.
    Conexión  Estableceuna conexión a una fuente específica de datos.   Comando  Ejecuta un comando en una fuente de datos. Expone Parámetros y puede enumerar una Transacción desde una Conexión.   Lector de datos  Lee un flujo sólo hacia delante y sólo de lectura de datos desde una fuente de datos.   Adaptador de datos  Llena un Conjunto de datos y resuelve actualizaciones con la fuente de datos
  • 18.
    Microsoft SQL Server.NET Data Provider Utiliza su propio protocolo para comunicarse con SQL Server sin agregar un OLE DB o una capa de ODBC Para usarlo necesita incluir el espacio de nombre System.Data.SqlClient [Visual Basic] Imports System.Data.SqlClient [C#] using System.Data.SqlClient;
  • 19.
    Proveedor de datos.NET de OLE DB Utiliza OLE DB nativo a través de interoperación COM [Visual Basic] Imports System.Data.OleDb [C#] using System.Data.OleDb ;
  • 20.
    Objetos de ADO.NETTiene algunos de los mismos objetos que ADO (como Connection y Command) Introduce objetos nuevos, como DataSets, DataReaders y DataSetCommands
  • 21.
    Objetos de conexión:SqlConnection y OleDBConnection Agregue una referencia a System.Data.SqlClient: Imports System.Data.SqlClient Cree un objeto SqlConnection al pasar la fuente de datos, la información de seguridad y el catálogo inicial al constructor: Dim nwindConn As SqlConnection = New SqlConnection( "Data Source=localhost;& Integrated Security=SSPI; " & "Initial Catalog=northwind") Abra la conexión: nwindConn.Open()
  • 22.
    Objetos de comandoRepresentan un comando que se ejecutará contra una fuente de datos. Si el comando que se ejecuta devuelve filas de datos, puede utilizar DataReader Para comandos SQL, usar SqlDataReader
  • 23.
    Métodos de comandoExecuteReader: Ejecuta una consulta SQL o un procedimiento almacenado y devuelve un objeto DataReader ExecuteNonQuery: Ejecuta una consulta SQL o un procedimiento almacenado y no regresa registros. ExecuteScalar: Recupera un valor único desde una base de datos. nwindCmd.CommandText = "Select count(*) as " & "NumberOfRegions from region"; Int count = (int) nwindCmd.ExecuteScalar();
  • 24.
    Ejecución de comandosSQL Cree un objeto de tipo SqlCommand: Dim nwindCmd As SqlCommand = New SqlCommand ("Select * from Customers", nwindConn) Ejecute el método ExecuteReader y almacene el flujo de filas en un objeto SQLReader: Dim nwindReader As SqlDataReader = nwindCmd.ExecuteReader(CommandBehavior.CloseConnection) While nwindReader.Read() MsgBox(nwindReader.GetString(0)) End While nwindReader.Close() nwindConn.Close()
  • 25.
    Objetos DataReader Estádiseñado para producir un flujo de sólo lectura y sólo hacia delante desde la base de datos El DataReader recupera lotes de registros y los coloca en la memoria caché, recuperando más registros según los necesite Un DataReader se devuelve después de ejecutar un comando Trabaja de manera similar a un Conjunto de registros en ADO, permitiéndole simplemente recorrer los registros
  • 26.
    Ejemplo Dim nwindReaderAs SqlDataReader = nwindCmd.ExecuteReader(CommandBehavior.CloseConnection) While nwindReader.Read() MsgBox(nwindReader.GetString(0)) End While nwindReader.Close()
  • 27.
    Objetos DataSet Esuna representación de datos que residen en la memoria que proporciona un modelo consistente de programación relacional sin importar la fuente de datos. Como resultado, se puede utilizar con varias fuentes de datos y datos XML, o se puede utilizar para administrar datos locales de la aplicación. El DataSet contiene una colección de uno o más objetos DataTable conformados de filas y columnas de datos Los datos están en las filas
  • 28.
    Objetos DataAdapter Esteobjeto permite la recuperación y guardado de datos entre un objeto DataSet y el almacén de datos fuente Es responsable de jalar los datos desde el almacén físico y colocarlos en las tablas y relaciones de datos El objeto DataAdapter también es responsable de transmitir cualquier actualización, inserción o eliminación de la base de datos física
  • 29.
    SqlConnection nwindConn= new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"); SqlCommand selectCMD = new SqlCommand("SELECT CustomerID, CompanyName FROM Customers", nwindConn); selectCMD.CommandTimeout = 30; SqlDataAdapter custDA = new SqlDataAdapter(); custDA.SelectCommand = selectCMD; nwindConn.Open(); DataSet custDS = new DataSet(); custDA.Fill(custDS, "Customers"); nwindConn.Close();
  • 30.
    Objetos DataView Seusan para mostrar los datos retenidos en un DataSet Proporcionan una vista personalizada de tablas de datos Son el equivalente de RecordSets desconectados de ADO Se pueden usar para especificar criterios de filtrado y clasificación y para buscar y editar un DataSet Se pueden crear cualquier número de DataViews para la misma tabla
  • 31.
    Cada DataTable enun DataSet tiene una propiedad DefaultView Dim dv As DataView dv = ds.Tables("Authors").DefaultView También se pueden filtrar datos dv = New DataView (ds.Tables("Authors")) dv.RowFilter = "state = 'CA'"