Vous êtes sur la page 1sur 57

ADO .

NET

Diego Casali
SE Regin Crdoba y NOA Microsoft de Argentina

Lo que vamos a cubrir

Entender la diferencia entre ADO y


ADO.NET Cmo integrar ADO.NET con .NET utilizando Visual Studio.NET Cmo utilizar las capacidades avanzadas de ADO.NET Cmo aprovechar el soporte XML con ADO.NET

Prerrequisitos de la sesin

Diseo y programacin de la base de datos



relacional Programacin de Visual Basic 6.0 ADO de Microsoft Entendimiento de XML

Agenda

Introduccin a ADO.NET Programacin con ADO.NET Soporte XML Funciones avanzadas Cundo utilizar qu?

Introduccin a ADO.NET
Qu es ADO.NET? Evolucin natural de ADO Interoperabilidad

Escalabilidad Modelo

Basado en estndares como XML, XSD Objetivos distribuidos, escenarios web desconectados Arquitectura distribuida que reemplaza al cliente / servidor Integracin de datos de diferentes recursos heterogneos

Introduccin a ADO.NET
Por qu ADO.NET?

Para acomodar un modelo de aplicacin


Web
Unido de manera flexible Mantiene el estado entre solicitudes Utiliza HTTP

Introduccin a ADO.NET
Comparacin entre ADO y ADO.NET
Funcin ADO ADO.NET
DataSet puede contener una o ms tablas representadas por Objeto DataTable Soporta el objeto DataRelation Utiliza un paradigma de exploracin para acceso no secuencial Se comunica con llamadas estandarizadas al DataAdapter Representacin de RecordSet puede contener una datos residentes en tabla la memoria Relacin entre mltiples tablas Visita de datos Requiere la consulta JOIN (UNIRSE) Escanea de manera secuencial la filas RecordSet Proporcionado por RecordSet pero generalmente soporta el acceso conectado

Acceso desconectado

Introduccin a ADO.NET
Comparacin entre ADO y ADO.NET
Funcin
Programabilidad

ADO
Utiliza el objeto de conexin para transmitir comandos

ADO.NET
Utiliza caractersticas de programacin de XML escritas de manera slida Transmite un DataSet con un archivo XML

Uso compartido de datos desconectados entre niveles y componentes Transmisin de datos a traves de Firewalls

Utiliza la clasificacin COM para transmitir el conjunto de registros desconectados Problemtico ya que los firewall generalmente se configuran para evitar solicitudes a nivel sistema Seguros de base de datos y conexiones activas de base de datos para largas duraciones

Los objetos DataSet soportados utilizan XML, los cuales pueden atravezar firewalls Acceso desconectado a la base de datos sin retener los seguros de la base de datos

Escalabilidad

Introduccin a ADO.NET
Objetos de datos .NET
Controls, Designers, Code-gen, etc XSL/T, X-Path, Validation, etc

DataSet
Sync

XmlDataDocument

DataAdapter

DataReader

XmlReader
XmlText- XmlNodeReader Reader

Command Connection .NET Data Provider

Introduccin a ADO.NET
Objetos de datos .NET

Agenda Introduccin a ADO.NET Programacin con ADO.NET Soporte XML Funciones avanzadas Cundo utilizar qu?

Programacin con ADO.NET


.NET Data Provider

Administra la interaccin a una fuente de datos


Administrado equivalente a capa OLE DB Expone directamente las interfaces del consumidor Especfico para (optimizada para) DataSource

Modelo de objeto de .NET Data Provider


Conexin Comando DataReader DataAdapter

Programacin con ADO.NET


.NET Data Provider SQL Server .NET Data Provider OLE DB .NET Data Provider
Microsoft OLE DB Provider for SQL Server Microsoft OLE DB Provider for Oracle Microsoft OLE DB Provider for Microsoft Jet

ODBC .NET Data Provider

Programacin con ADO.NET


Conexin

Representa una conexin a la Fuente de


datos En una conexin, usted puede
Personalizar la conexin a la base de datos Iniciar, comprometer y abortar transacciones

Equivalente al objeto ADODB.Connection

Programacin con ADO.NET


Conexin
// Ejemplo en C# //Especificar el Namespace System.Data.SQL Using System.Data.SqlClient; // Crear una instancia del objeto SQLConnection SQLConnection cnn = new SQLConnection(); // Definir la cadena de conexin cnn.ConnectionString = "server=localhost;uid=sa;database=pubs"; //Abrir la conexin cnn.Open();

Programacin con ADO.NET


Comando

Representa un comando que se va a ejecutar


No necesariamente SQL

Con un comando ADO usted puede:


Definir un enunciado para que se ejecute en el servidor Establecer informacin de parmetros para ese comando Recuperar valores de retorno de la ejecucin del comando

Corresponde al objeto ADODB.Command Puede contener parmetros


Valores que se van a utilizar cuando se ejecute el enunciado

Programacin con ADO.NET


Comando

ExecuteNonQuery ExecuteReader ExecuteScalar ExecuteXmlReader (nicamente para el


objeto SqlCommand)

Programacin con ADO.NET


DataReader

Acceso a datos rpido, nicamente hacia



delante, nicamente de lectura Funciona como un socket Permite un acceso escrito de manera slida Debe ser cerrado

Programacin con ADO.NET


DataSet

Almacn en memoria para datos del cliente Vista relacional de datos


Tablas, columnas, filas, restriciones, relaciones

Persisten los datos y el esquema como XML Modelo desconectado explcito


Objeto remoto, desconectado ndice en forma de arreglo

No hay conocimiento de Fuente de datos o Propiedades


Modelo comn sobre datos heterogneos Caractersticas de rendimiento predecibles

Programacin con ADO.NET


DataSet
DataSet

DataTable
DataColumn

DataTable

DataRow

Relationes Esquema XML Restricciones

Programacin con ADO.NET


DataRelation

Qu es DataRelation?
Se utiliza para relacionar dos objetos DataTable Las relaciones se crean entre columnas equivalentes en las tablas padre e hijo Las relaciones tambin pueden presentar en cascada varios cambios de la fila padre hacia las filas hijo

Programacin con ADO.NET


Typed DataSet

Clase generada al momento del diseo


Beneficios
Hereda de DataSet Esquema codificado en la clase IntelliSense Verificacin de tipos en tiempo de compilacin Cdigo legible, conciso

Programacin con ADO.NET


DataAdapter

Administra el Intercambio de datos entre DataSet y la Fuente de datos


Llenar (DataSet o DataTable) Actualizar (DataSet o DataTable)

Ofrece Cruces de informacin entre tablas y columnas El usuario puede anular los comandos Insertar / actualizar / eliminar
Componente de autogeneracin disponible

Permite que un nico DataSet se llene de varios Orgenes de datos diferentes

Programacin con ADO.NET


DataAdapter
DataAdapter Base de datos

SelectCommand
InsertCommand UpdateCommand DeleteCommand TableMappings DataSet

Programacin con ADO.NET


DataAdapter
// Ejemplo en C# // Crear un DataAdapter SQLDataAdapter objDataAdapter = new SQLDataAdapter( "Select * from authors",cnn); // Cargar los datos en el DataSet objDataAdapter.Fill(pubs, "Authors"); // hacer cambios de datos de clientes en el dataset pubs.Tables["Authors"].Rows[0]["au_lname"]="smith"; objDataAdapter.Update(pubs, "Authors");

Programacin con ADO.NET


Recursos para DataBinding

DataReader DataTable DataView DataSet Arreglo Coleccin IList

Programacin con ADO.NET


DataBinding

DataView Concibe a sta como una vista en DataTable Permite establecer una solicitud de clasificacin y Filtro en una vista de la tabla Puede crear cualquier nmero de DataViews en una tabla para permitir diferentes vistas de la misma tabla

Demostracin 1
DataSet, DataAdapter y DataReader

Agenda Introduccin a ADO.NET Programacin con ADO.NET Soporte XML Funciones avanzadas Cundo utilizar qu?

Soporte XML
ADO.NET y XML

DataSet
Carga / guarda datos XML dentro / fuera de DataSet El esquema se puede cargar / guardar como XSD El esquema se puede inferir de datos XML

XmlDataDocument
Expone una vista relacional sobre XML estructurado Permite una escritura, unin de control, acceso relacional slidos de datos XML Permite herramientas XML (validacin de esquemas, XSL/T, consultas Xpath) contra datos relacionales Preserva una fidelidad total de documentos XML

Soporte XML
ADO.NET y XML
// Ejemplo en C#

// Asociar un XmlDataDocument con el DataSet XmlDataDocument xmlDocument = new XmlDataDocument(pubs);


// Obtener un XmlNavigator para el XmlDataDocument DataDocumentNavigator xmlNavigator = new DataDocumentNavigator(xmlDocument); // Obtener todos los autores de CA xmlNavigator.Select("//Authors[state='CA']/au_lname"); // Mostrar todos los apellidos de autores while(xmlNavigator.MoveToNextSelected()) { Console.WriteLine("Name = " + xmlNavigator.InnerText); }

Soporte XML
ADO.NET y XML

DataSet ofrece manejo directo de


documentos y esquemas XML
ReadXml() ReadXmlSchema() WriteXml() WriteXmlSchema()

Soporte XML
SQLXML SQLXML Managed Classes 3.0
SqlXmlCommand SqlXmlParameter SqlXmlAdapter

Demontracin 2 Soporte XML

Agenda Introduccin a ADO.NET Programacin con ADO.NET Soporte XML Funciones avanzadas Cundo utilizar qu?

Funciones avanzadas
ConnectionPooling

El proveedor OLE DB utiliza agrupacin

de

sesiones tradicional OLEDB El proveedor de clientes SQL utiliza agrupacin de sesiones basada en COM+

Funciones avanzadas
ConnectionPooling
// Ejemplo en C# SqlConnection conn = new SqlConnection(); conn.ConnectionString = Integrated Security=SSPI; Initial Catalog=Northwind conn.Open(); // Se crea el Pool A; SqlConnection conn = new SqlConnection(); conn.ConnectionString = Integrated Security=SSPI; Initial Catalog=pubs conn.Open(); // Se crea el Pool B ya que la cadena de conexin es diferente SqlConnection conn = new SqlConnection(); conn.ConnectionString = Integrated Security=SSPI; Initial Catalog=Northwind conn.Open(); // Se usa el Pool A

Funciones avanzadas
Transacciones distribuidas

Para utilizar las transacciones

distribuidas:

Utilice System.EnterpriseServices Cree un ServicedComponent para ofrecer soporte para transacciones automtico Agregue funciones al ServicedComponents Ejecute transacciones en el ServicedComponents

Funciones avanzadas
Manejo de errores

ADO.NET permite a los desarrolladores


agregar mensajes de error a cada fila de datos en un DataSet Usted puede filtrar para filas en error El error persiste con DataSet an cuando haya sido transferido utilizando XML O Servicios Web

Demostracin 3
Funciones avanzadas

Agenda Introduccin a ADO.NET Programacin con ADO.NET Soporte XML Funciones avanzadas Cundo utilizar qu?

Cundo utilizar qu?


Consideraciones

Acceso a datos conectados Acceso a datos desconectados Vista XML de datos relacionales

Cundo utilizar qu?


Acceso a datos conectados

Proveedores administrados
Conexin, operacin
Conectar a DataSource Iniciar / terminar transacciones

Comando, parmetros
Actualizaciones de Base de datos, selecciones, DDL

DataReader
Cursor de servidor (FO/RO)

DataAdapter
Empujar los datos dentro de un Dataset Leer los cambios fuera de DataSet

Cundo utilizar qu?


Acceso a datos desconectados

DataSet
Datos de aplicacin Resultados remotos
SOAP, WebMethods, Remoting

Resultados de memoria cach


Cach ASP.NET

Resultados persistentes
Guardar datos como XML, esquema como XSD

Interaccin del usuario


Desplazar, clasificar, filtrar

DataView, DataViewManager
Unir controles Windows

Cundo utilizar qu?


Acceso de datos XML

XML
XmlDocument
XmlDataDocument Implementa el ncleo de nivel 1 y 2 del W3C DOM

XPathNavigator
Ofrece acceso aleatorio de slo lectura

XslTransform
Soporta sintaxis XSLT 1.0

Resumen de la sesin

Una evolucin natural de ADO Diseado para trabajar con XML Integrado estrechamente con el marco .NET Ofrece mecanismos rpidos y eficientes para acceso a datos conectados y desconectados

Para mayor informacin

MSDN Web site at


msdn.microsoft.com

.NET Framework at
www.microsoft.com/net

Visual Studio .NET at


www.microsoft.com/vstudio

ADO
www.microsoft.com/data

MS Press
Recursos esenciales para desarrolladores

Ahora puede crear sus propios libros personalizados MS Press books en

mspress.microsoft.com/custombook
Escoja entre Windows 2000, SQL Server 200, Exchange 2000, Office 2000 y XML Crelo y despus pdalo en versin MS Reader, PDF o impresa

MSDN
Recursos esenciales para desarrolladores
Servicios de suscripcin Informacin en lnea Capacitacin & Eventos
Publicaciones impresas

Biblioteca, Profesional, Universal Proporcionado va CD-ROM, DVD, Web MSDN Online, MSDN Flash

MSDN Training, Tech-Ed, PDC, Developer Days, MSDN/Eventos en el sitio MSDN Magazine MSDN News Grupos de usuarios MSDN

Programas de membresa

Dnde puedo obtener MSDN?

Visite MSDN en lnea en

msdn.microsoft.com Regstrese para el Boletn de noticias por correo electrnico MSDN Flash en msdn.microsoft.com/resources/ msdnflash.asp Convirtase en un suscriptor del CD de MSDN en msdn.microsoft.com/subscriptions Asista a ms eventos de MSDN

ANEXO

Application Blocks
Data Access Exception Management

Data Access Application Block

Simplifies calling ADO.NET SqlClient


dr = SqlHelper.ExecuteReader( CONN_STRING,spSaveCustomer", John , Doe );

Stored procedure parameter management


Caches s. proc. parameter definitions Cache can be loaded manually (enforcing type manually) or automatically on the fly Get DataSets, DataReaders, Scalars, XmlReaders all in one line of code

Simplifies returning many formats


Simplifies calling with many sources
Connections, Conn. Strings, SQL Transactions Plays well with COM+

Data Access Application Block


Data Access Application Block Data Access Client SqlHelper

ExecuteNonQuery T-SQL Statement or Stored Procedure ExecuteDataset ExecuteReader int DataSet SqlDataReader object XmlReader CacheParameterSet GetCachedParameterSet SqlParameter Array GetSpParameterSet ExecuteScalar ExecuteXmlReader SqlHelperParameterCache

Data Access Application Block

SqlHelper class has the following overloaded static methods:


ExecuteNonQuery - execute Transact-SQL statements or stored procedures that do not return rows ExecuteDataset - retrieve a DataSet object that contains the resultset of a Transact-SQL statement or stored procedure ExecuteReader - return a DataReader object that contains the resultset of a Transact-SQL statement or stored procedure ExecuteScalar - retrieve a single value resultset from a Transact-SQL statement or stored procedure ExecuteXMLReader - retrieve XML data

Demostracin 4
DAAB
Usando el Data Access Application Block