ADO

31
.NET .NET ADO .NET ADO .NET

description

diapositiva sobre ADO .NET

Transcript of ADO

Page 1: ADO

.NET.NET

ADO .NETADO .NET

Page 2: ADO

TemarioTemario

IntroducciónIntroducción Lenguajes .NETLenguajes .NET ASP .NETASP .NET ADO .NETADO .NET Programación en componentesProgramación en componentes Aplicaciones windowsAplicaciones windows XML y Web ServicesXML y Web Services

Page 3: ADO

IntroducciónIntroducción ADO.NET es la más reciente en una larga ADO.NET es la más reciente en una larga

línea de tecnologías de acceso a bases de línea de tecnologías de acceso a bases de datos que empezó con la interfaz de datos que empezó con la interfaz de programación de aplicaciones (API) de programación de aplicaciones (API) de conectividad abierta para bases de datos conectividad abierta para bases de datos (ODBC) (ODBC)

.NET Framework incluye esta nueva .NET Framework incluye esta nueva tecnología de acceso a datos, la cual es una tecnología de acceso a datos, la cual es una mejora en la evolución de Microsoft® mejora en la evolución de Microsoft® ActiveX® Data Objects (ADO)ActiveX® Data Objects (ADO)

Page 4: ADO

ADO.NET está diseñada para aplicaciones ADO.NET está diseñada para aplicaciones distribuidas que puedan necesitar operar en distribuidas que puedan necesitar operar en el Web el Web

Como parte de .NET Framework, Microsoft Como parte de .NET Framework, Microsoft ofrece una Biblioteca de clase del marco de ofrece una Biblioteca de clase del marco de trabajo, el cual cubre todas las APIs trabajo, el cual cubre todas las APIs existentes de Windows y másexistentes de Windows y más

Entre éstas se encuentran los modelos de Entre éstas se encuentran los modelos de objeto XML y ADO que se han integrado en un objeto XML y ADO que se han integrado en un grupo de clases llamado ADO.NET grupo de clases llamado ADO.NET

Page 5: ADO

ADO.NET no es una revisión de ADO sino una ADO.NET no es una revisión de ADO sino una forma nueva de manipular datos que se basa forma nueva de manipular datos que se basa en datos desconectados XMLen datos desconectados XML

ADO no proporciona todas las funciones ADO no proporciona todas las funciones necesarias para desarrollar aplicaciones Web necesarias para desarrollar aplicaciones Web robustas y escalables cuando se usa desde robustas y escalables cuando se usa desde Active Server Pages (ASP)Active Server Pages (ASP)

Esto es porque el modelo de objetos ADO Esto es porque el modelo de objetos ADO fomenta las operaciones orientadas a fomenta las operaciones orientadas a conexiones conexiones

Page 6: ADO

Arquitectura ADO.NETArquitectura ADO.NET

Page 7: ADO

Datasets desconectadosDatasets desconectados ADO.NET ha sido diseñado para funcionar ADO.NET ha sido diseñado para funcionar

con Datasets desconectadoscon Datasets desconectados Las aplicaciones están conectadas a la fuente Las aplicaciones están conectadas a la fuente

de datos sólo lo suficiente para recolectar y de datos sólo lo suficiente para recolectar y actualizar datosactualizar datos

ADO.NET proporciona una interfaz de acceso ADO.NET proporciona una interfaz de acceso a datos para comunicarse con fuentes de a datos para comunicarse con fuentes de datos que cumplen con OLE DBdatos que cumplen con OLE DB

Las aplicaciones de uso compartido de datos Las aplicaciones de uso compartido de datos pueden usar ADO.NET para conectarse a pueden usar ADO.NET para conectarse a estas fuentes de datos y recuperar, manipular estas fuentes de datos y recuperar, manipular y actualizar datosy actualizar datos

Page 8: ADO

Un Dataset es una copia en la memoria de los Un Dataset es una copia en la memoria de los datos de la base de datos. datos de la base de datos.

Un Dataset puede contener datos de Un Dataset puede contener datos de cualquier cantidad de tablas o vistas de cualquier cantidad de tablas o vistas de bases de datos. bases de datos.

El Dataset constituye una vista desconectada El Dataset constituye una vista desconectada de la base de datos porque existe en la de la base de datos porque existe en la memoria sin una conexión activa a una base memoria sin una conexión activa a una base de datos que contenga las tablas o vistas de datos que contenga las tablas o vistas correspondientes correspondientes

Page 9: ADO

Un Dataset es como una base relacional Un Dataset es como una base relacional miniatura dentro de la memoria. Contiene miniatura dentro de la memoria. Contiene varias tablas, cada una de las cuales varias tablas, cada una de las cuales corresponde a una tabla o vistacorresponde a una tabla o vista

En aplicaciones con n niveles, normalmente En aplicaciones con n niveles, normalmente los datos se pasan desde la BD a un objeto de los datos se pasan desde la BD a un objeto de negocios de nivel medio y luego a la interfaznegocios de nivel medio y luego a la interfaz

Para acomodar el intercambio de datos, Para acomodar el intercambio de datos, ADO.NET usa persistencia y transmisión con ADO.NET usa persistencia y transmisión con base en XMLbase en XML

Page 10: ADO
Page 11: ADO

ADO vs ADO.NETADO vs ADO.NET ADO.NET ofrece dos depósitos de datos, el ADO.NET ofrece dos depósitos de datos, el

DataReader y el DataSetDataReader y el DataSet DataReader es equivalente a un RecordSet en DataReader es equivalente a un RecordSet en

ADO de sólo lectura y de sólo hacia delanteADO de sólo lectura y de sólo hacia delante La analogía más cercana de un DataSet es un La analogía más cercana de un DataSet es un

RecordSet desconectado, aunque es mucho RecordSet desconectado, aunque es mucho más que esomás que eso

ADO.NET no tiene equivalente a RecordSets ADO.NET no tiene equivalente a RecordSets conectados y actualizables de ADO conectados y actualizables de ADO

Page 12: ADO

La clase DataSet tiene una colección de La clase DataSet tiene una colección de tablas y una colección de relacionestablas y una colección de relaciones

Cada tabla en la colección de tablas tiene una Cada tabla en la colección de tablas tiene una colección de columnas y una colección de colección de columnas y una colección de filas que representan los datos que se filas que representan los datos que se mantienen en el DataSetmantienen en el DataSet

Estos objetos representan el esquema del Estos objetos representan el esquema del DataSetDataSet

El DataSet puede estar serializado o no hacia El DataSet puede estar serializado o no hacia o desde XML.o desde XML.

Page 13: ADO

Recorrido de datosRecorrido de datos Los métodos que utiliza ADO.NET para leer o Los métodos que utiliza ADO.NET para leer o

modificar datos difiere de los métodos de modificar datos difiere de los métodos de programación que usa ADOprogramación que usa ADO

En ADO, se explora de manera secuencial a En ADO, se explora de manera secuencial a través de las filas del RecordSettravés de las filas del RecordSet

En ADO.NET, se emplea un paradigma de En ADO.NET, se emplea un paradigma de navegación, moviéndose de una fila de una navegación, moviéndose de una fila de una tabla de datos a la fila o filas tabla de datos a la fila o filas correspondientes de otra tabla de datos correspondientes de otra tabla de datos siguiendo la relación siguiendo la relación

Page 14: ADO

XML como formato datos universalXML como formato datos universal

ADO.NET usa XML para garantizar la ADO.NET usa XML para garantizar la interoperabilidad de plataformasinteroperabilidad de plataformas

Cuando ocurre la transmisión a través de Cuando ocurre la transmisión a través de XML, el receptor ya no tiene que ser un objeto XML, el receptor ya no tiene que ser un objeto COMCOM

El componente receptor ya no tiene ninguna El componente receptor ya no tiene ninguna restricción arquitectónicarestricción arquitectónica

Cualquier componente de software puede Cualquier componente de software puede compartir datos ADO.NET siempre y cuando compartir datos ADO.NET siempre y cuando use el mismo esquema XML use el mismo esquema XML

Page 15: ADO

Modelo de objetos ADO.NETModelo de objetos ADO.NET Sin importar si escribe Web Forms, Sin importar si escribe Web Forms,

Windows Forms o servicios Web XML, Windows Forms o servicios Web XML, si cuenta con una fuente de datos en su si cuenta con una fuente de datos en su sistema, ADO.NET siempre presenta el sistema, ADO.NET siempre presenta el mismo conjunto de clasesmismo conjunto de clases

Existen dos partes principales del Existen dos partes principales del modelo ADO.NET: Los Proveedores de modelo ADO.NET: Los Proveedores de datos .NET y los objetos ADO.NETdatos .NET y los objetos ADO.NET

Page 16: ADO

Proveedores de datos .NETProveedores de datos .NET

Se utiliza para conectarse a bases de datos, Se utiliza para conectarse a bases de datos, ejecutar comandos y recuperar resultados ejecutar comandos y recuperar resultados

El Proveedor de datos .NET está diseñado El Proveedor de datos .NET está diseñado para ser ligero, creando una capa mínima para ser ligero, creando una capa mínima entre la fuente de datos y su código entre la fuente de datos y su código

Cuatro objetos centrales componen un Cuatro objetos centrales componen un Proveedor de datos .NET: Conexión, Proveedor de datos .NET: Conexión, Comando, Lector de datos y Adaptador de Comando, Lector de datos y Adaptador de datos datos

Page 17: ADO

ConexiónConexión  Establece una conexión a una  Establece una conexión a una fuente específica de datos.  fuente específica de datos.  

ComandoComando  Ejecuta un comando en una fuente  Ejecuta un comando en una fuente de datos. Expone Parámetros y puede de datos. Expone Parámetros y puede enumerar una Transacción desde una enumerar una Transacción desde una Conexión.  Conexión.  

Lector de datosLector de datos  Lee un flujo sólo hacia  Lee un flujo sólo hacia delante y sólo de lectura de datos desde una delante y sólo de lectura de datos desde una fuente de datos.  fuente de datos.  

Adaptador de datosAdaptador de datos  Llena un Conjunto de  Llena un Conjunto de datos y resuelve actualizaciones con la fuente datos y resuelve actualizaciones con la fuente de datosde datos

Page 18: ADO

Microsoft SQL Server .NET Microsoft SQL Server .NET Data Provider Data Provider

Utiliza su propio protocolo para comunicarse Utiliza su propio protocolo para comunicarse con SQL Server sin agregar un OLE DB o una con SQL Server sin agregar un OLE DB o una capa de ODBCcapa de ODBC

Para usarlo necesita incluir el espacio de Para usarlo necesita incluir el espacio de nombre System.Data.SqlClient nombre System.Data.SqlClient

[Visual Basic] [Visual Basic]

Imports System.Data.SqlClient Imports System.Data.SqlClient

[C#] [C#]

using System.Data.SqlClient; using System.Data.SqlClient;

Page 19: ADO

Proveedor de datos .NET de Proveedor de datos .NET de OLE DB OLE DB Utiliza OLE DB nativo a través de Utiliza OLE DB nativo a través de

interoperación COM interoperación COM

[Visual Basic] [Visual Basic]

Imports System.Data.OleDb Imports System.Data.OleDb

[C#] [C#]

using System.Data.OleDb ; using System.Data.OleDb ;

Page 20: ADO

Objetos de ADO.NETObjetos de ADO.NET

Tiene algunos de los mismos objetos Tiene algunos de los mismos objetos que ADO (como Connection y que ADO (como Connection y Command)Command)

Introduce objetos nuevos, como Introduce objetos nuevos, como DataSets, DataReaders y DataSets, DataReaders y DataSetCommands DataSetCommands

Page 21: ADO

Objetos de conexión: Objetos de conexión: SqlConnection y OleDBConnectionSqlConnection y OleDBConnection

1.1. Agregue una referencia a System.Data.SqlClient:Agregue una referencia a System.Data.SqlClient:

Imports System.Data.SqlClientImports System.Data.SqlClient

2.2. Cree un objeto SqlConnection al pasar la fuente de Cree un objeto SqlConnection al pasar la fuente de datos, la información de seguridad y el catálogo datos, la información de seguridad y el catálogo inicial al constructor:inicial al constructor:

Dim nwindConn As SqlConnection = Dim nwindConn As SqlConnection = New SqlConnection(New SqlConnection(

"Data Source=localhost;& Integrated "Data Source=localhost;& Integrated Security=SSPI;Security=SSPI;

" & "Initial Catalog=northwind")" & "Initial Catalog=northwind")

3.3. Abra la conexión:Abra la conexión:

nwindConn.Open()nwindConn.Open()

Page 22: ADO

Objetos de comandoObjetos de comando Representan un comando que se Representan un comando que se

ejecutará contra una fuente de datos. ejecutará contra una fuente de datos. Si el comando que se ejecuta devuelve Si el comando que se ejecuta devuelve

filas de datos, puede utilizar DataReaderfilas de datos, puede utilizar DataReader Para comandos SQL, usar SqlDataReaderPara comandos SQL, usar SqlDataReader

Page 23: ADO

Métodos de comandoMétodos de comando ExecuteReader:ExecuteReader: Ejecuta una consulta SQL o Ejecuta una consulta SQL o

un procedimiento almacenado y devuelve un un procedimiento almacenado y devuelve un objeto DataReader objeto DataReader

ExecuteNonQuery:ExecuteNonQuery: Ejecuta una consulta SQL Ejecuta una consulta SQL o un procedimiento almacenado y no regresa o un procedimiento almacenado y no regresa registros. registros.

ExecuteScalar:ExecuteScalar: Recupera un valor único Recupera un valor único desde una base de datos. desde una base de datos.

nwindCmd.CommandText = "Select count(*) as nwindCmd.CommandText = "Select count(*) as " &" &

"NumberOfRegions from region";"NumberOfRegions from region";

Int count = (int) nwindCmd.ExecuteScalar();Int count = (int) nwindCmd.ExecuteScalar();

Page 24: ADO

Ejecución de comandos SQLEjecución de comandos SQL Cree un objeto de tipo SqlCommand:Cree un objeto de tipo SqlCommand:

Dim nwindCmd As SqlCommand = Dim nwindCmd As SqlCommand = New SqlCommandNew SqlCommand

("Select * from Customers", nwindConn)("Select * from Customers", nwindConn)

Ejecute el método ExecuteReader y almacene el flujo Ejecute el método ExecuteReader y almacene el flujo de filas en un objeto SQLReader:de filas en un objeto SQLReader:

Dim nwindReader As SqlDataReader = Dim nwindReader As SqlDataReader = nwindCmd.ExecuteReader(CommandBehavior.CloseConnection)nwindCmd.ExecuteReader(CommandBehavior.CloseConnection)While nwindReader.Read()While nwindReader.Read()

MsgBox(nwindReader.GetString(0))MsgBox(nwindReader.GetString(0))End WhileEnd WhilenwindReader.Close()nwindReader.Close()nwindConn.Close() nwindConn.Close()

Page 25: ADO

Objetos DataReaderObjetos DataReader Está diseñado para producir un flujo de sólo Está diseñado para producir un flujo de sólo

lectura y sólo hacia delante desde la base de lectura y sólo hacia delante desde la base de datosdatos

El DataReader recupera lotes de registros y los El DataReader recupera lotes de registros y los coloca en la memoria caché, recuperando más coloca en la memoria caché, recuperando más registros según los necesiteregistros según los necesite

Un DataReader se devuelve después de Un DataReader se devuelve después de ejecutar un comandoejecutar un comando

Trabaja de manera similar a un Conjunto de Trabaja de manera similar a un Conjunto de registros en ADO, permitiéndole simplemente registros en ADO, permitiéndole simplemente recorrer los registrosrecorrer los registros

Page 26: ADO

EjemploEjemplo

Dim nwindReader As Dim nwindReader As

SqlDataReader = SqlDataReader = nwindCmd.ExecuteReader(CommandBehavior.nwindCmd.ExecuteReader(CommandBehavior.CloseConnection)CloseConnection)

While nwindReader.Read()While nwindReader.Read()MsgBox(nwindReader.GetString(0))MsgBox(nwindReader.GetString(0))

End WhileEnd While

nwindReader.Close()nwindReader.Close()

Page 27: ADO

Objetos DataSetObjetos DataSet Es una representación de datos Es una representación de datos

que residen en la memoria que que residen en la memoria que proporciona un modelo proporciona un modelo consistente de programación consistente de programación relacional sin importar la fuente de relacional sin importar la fuente de datos. Como resultado, se puede datos. Como resultado, se puede utilizar con varias fuentes de utilizar con varias fuentes de datos y datos XML, o se puede datos y datos XML, o se puede utilizar para administrar datos utilizar para administrar datos locales de la aplicación. locales de la aplicación.

El DataSet contiene una colección El DataSet contiene una colección de uno o más objetos DataTable de uno o más objetos DataTable conformados de filas y columnas conformados de filas y columnas de datosde datos

Los datos están en las filasLos datos están en las filas

Page 28: ADO

Objetos DataAdapterObjetos DataAdapter Este objeto permite la recuperación y Este objeto permite la recuperación y

guardado de datos entre un objeto guardado de datos entre un objeto DataSet y el almacén de datos fuenteDataSet y el almacén de datos fuente

Es responsable de jalar los datos desde Es responsable de jalar los datos desde el almacén físico y colocarlos en las el almacén físico y colocarlos en las tablas y relaciones de datostablas y relaciones de datos

El objeto DataAdapter también es El objeto DataAdapter también es responsable de transmitir cualquier responsable de transmitir cualquier actualización, inserción o eliminación actualización, inserción o eliminación de la base de datos física de la base de datos física

Page 29: ADO

SqlConnection SqlConnection

nwindConn = new SqlConnection("Data nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"); Catalog=northwind");

SqlCommand selectCMD = new SqlCommand("SELECT SqlCommand selectCMD = new SqlCommand("SELECT CustomerID, CompanyName FROM Customers", CustomerID, CompanyName FROM Customers", nwindConn); nwindConn);

selectCMD.CommandTimeout = 30; selectCMD.CommandTimeout = 30;

SqlDataAdapter custDA = new SqlDataAdapter();SqlDataAdapter custDA = new SqlDataAdapter();

custDA.SelectCommand = selectCMD; custDA.SelectCommand = selectCMD;

nwindConn.Open(); nwindConn.Open();

DataSet custDS = new DataSet(); DataSet custDS = new DataSet();

custDA.Fill(custDS, "Customers"); custDA.Fill(custDS, "Customers");

nwindConn.Close(); nwindConn.Close();

Page 30: ADO

Objetos DataViewObjetos DataView Se usan para mostrar los datos retenidos en Se usan para mostrar los datos retenidos en

un DataSetun DataSet Proporcionan una vista personalizada de Proporcionan una vista personalizada de

tablas de datostablas de datos Son el equivalente de RecordSets Son el equivalente de RecordSets

desconectados de ADOdesconectados de ADO Se pueden usar para especificar criterios de Se pueden usar para especificar criterios de

filtrado y clasificación y para buscar y editar filtrado y clasificación y para buscar y editar un DataSet un DataSet

Se pueden crear cualquier número de Se pueden crear cualquier número de DataViews para la misma tablaDataViews para la misma tabla

Page 31: ADO

Cada DataTable en un DataSet tiene una Cada DataTable en un DataSet tiene una propiedad DefaultView propiedad DefaultView

Dim dv As DataViewDim dv As DataView

dv = ds.Tables("Authors").DefaultViewdv = ds.Tables("Authors").DefaultView

También se pueden filtrar datos También se pueden filtrar datos

dv = New DataView (ds.Tables("Authors"))dv = New DataView (ds.Tables("Authors"))

dv.RowFilter = "state = 'CA'"dv.RowFilter = "state = 'CA'"