Você está na página 1de 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

Basado en estndares como XML, XSD

Escalabilidad

Objetivos distribuidos, escenarios web


desconectados

Modelo

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

Representacin de RecordSet puede contener una


datos residentes en tabla
la memoria

DataSet puede contener


una o ms tablas
representadas por Objeto
DataTable

Relacin entre
mltiples tablas

Requiere la consulta JOIN


(UNIRSE)

Soporta el objeto
DataRelation

Visita de datos

Escanea de manera secuencial


la filas RecordSet

Utiliza un paradigma de
exploracin para acceso
no secuencial

Acceso
desconectado

Proporcionado por RecordSet


pero generalmente soporta el
acceso conectado

Se comunica con
llamadas estandarizadas
al DataAdapter

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

ADO

ADO.NET

Programabilidad

Utiliza el objeto de conexin para


transmitir comandos

Utiliza caractersticas de
programacin de XML
escritas de manera slida

Uso compartido de datos


desconectados entre
niveles y componentes

Utiliza la clasificacin COM para


transmitir el conjunto de registros
desconectados

Transmite un DataSet con un


archivo XML

Transmisin de datos a
traves de Firewalls

Problemtico ya que los firewall


generalmente se configuran para
evitar solicitudes a nivel sistema

Los objetos DataSet


soportados utilizan XML, los
cuales pueden atravezar
firewalls

Escalabilidad

Seguros de base de datos y


conexiones activas de base de
datos para largas duraciones

Acceso desconectado a la
base de datos sin retener los
seguros de la base de datos

Introduccin a ADO.NET
Objetos de datos .NET
Controls,
Designers,
Code-gen, etc
DataSet

DataAdapter

XSL/T, X-Path,
Validation, etc

Sync

DataReader

Command
Connection
.NET Data Provider

XmlDataDocument

XmlReader
XmlText- XmlNodeReader
Reader

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

Con un comando ADO usted puede:

Corresponde al objeto ADODB.Command


Puede contener parmetros

No necesariamente SQL
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

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

Persisten los datos y el esquema como XML


Modelo desconectado explcito

No hay conocimiento de Fuente de datos o


Propiedades

Tablas, columnas, filas, restriciones, relaciones

Objeto remoto, desconectado


ndice en forma de arreglo

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


Hereda de DataSet
Esquema codificado en la clase

Beneficios
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
SelectCommand

Base de datos

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

XmlDataDocument

Carga / guarda datos XML dentro / fuera de DataSet


El esquema se puede cargar / guardar como XSD
El esquema se puede inferir de datos XML
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

Biblioteca, Profesional, Universal


Proporcionado va CD-ROM, DVD, Web

Informacin
en lnea

MSDN Online, MSDN Flash

Capacitacin
& Eventos

MSDN Training, Tech-Ed, PDC,


Developer Days, MSDN/Eventos en el
sitio

Publicaciones
impresas

MSDN Magazine
MSDN News

Programas de
membresa

Grupos de usuarios MSDN

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

Stored procedure parameter management

Simplifies returning many formats

Simplifies calling with many sources

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

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
Connections, Conn. Strings, SQL Transactions
Plays well with COM+

Data Access Application Block


Data Access Application Block
Data Access Application Block

Data Access Client


Data Access Client

T-SQL Statement or
T-SQL Statement or
Stored Procedure
Stored Procedure
int
int
DataSet
DataSet
SqlDataReader
SqlDataReader
object
object
XmlReader
XmlReader

SqlParameter Array
SqlParameter Array

SqlHelper
SqlHelper

ExecuteNonQuery
ExecuteNonQuery
ExecuteDataset
ExecuteDataset
ExecuteReader
ExecuteReader
ExecuteScalar
ExecuteScalar
ExecuteXmlReader
ExecuteXmlReader
SqlHelperParameterCache
SqlHelperParameterCache

CacheParameterSet
CacheParameterSet
GetCachedParameterSet
GetCachedParameterSet
GetSpParameterSet
GetSpParameterSet

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

Você também pode gostar