ADO
-
Upload
juancabicho -
Category
Technology
-
view
6.280 -
download
4
description
Transcript of ADO
.NET.NET
ADO .NETADO .NET
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
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)
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
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
Arquitectura ADO.NETArquitectura ADO.NET
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
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
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
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
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.
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
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
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
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
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
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;
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 ;
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
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()
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
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();
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()
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
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()
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
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
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();
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
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'"