ADO.NET Diego Casali SE Región Córdoba y NOA Microsoft de Argentina.

Post on 03-Feb-2015

11 views 2 download

Transcript of ADO.NET Diego Casali SE Región Córdoba y NOA Microsoft de Argentina.

ADO .NET

Diego CasaliSERegión Córdoba y NOAMicrosoft de Argentina

Lo que vamos a cubrir

• Entender la diferencia entre ADO y ADO.NET

• Cómo integrar ADO.NET con .NET utilizando Visual Studio.NET

• Cómo utilizar las capacidades avanzadas de ADO.NET

• Cómo aprovechar el soporte XML con ADO.NET

Prerrequisitos de la sesión

• Diseño y programación de la base de datos relacional

• Programación de Visual Basic 6.0

• ADO de Microsoft

• Entendimiento de XML

Agenda

• Introducción a ADO.NET

• Programación con ADO.NET

• Soporte XML

• Funciones avanzadas

• ¿Cuándo utilizar qué?

Introducción a ADO.NET¿Qué es ADO.NET?

• Evolución natural de ADO• Interoperabilidad

– Basado en estándares como XML, XSD• Escalabilidad

– Objetivos distribuidos, escenarios web desconectados

• Modelo– Arquitectura distribuida que reemplaza al

cliente / servidor– Integración de datos de

diferentes recursos heterogéneos

Introducción a ADO.NET¿Por qué ADO.NET?

• Para acomodar un modelo de aplicación Web– Unido de manera flexible– Mantiene el estado entre solicitudes– Utiliza HTTP

Introducción a ADO.NETComparación entre ADO y ADO.NET

Función ADO ADO.NET

Representación de datos residentes en la memoria

RecordSet puede contener una tabla

DataSet puede contener una o más tablas representadas por Objeto DataTable

Relación entre múltiples tablas

Requiere la consulta JOIN (UNIRSE)

Soporta el objeto DataRelation

Visita de datos Escanea de manera secuencial la filas RecordSet

Utiliza un paradigma de exploración para acceso no secuencial

Acceso desconectado

Proporcionado por RecordSet pero generalmente soporta el acceso conectado

Se comunica con llamadas estandarizadas al DataAdapter

Introducción a ADO.NETComparación entre ADO y ADO.NET

Función ADO ADO.NET

Programabilidad Utiliza el objeto de conexión para transmitir comandos

Utiliza características de programación de XML escritas de manera sólida

Uso compartido de datos desconectados entre niveles y componentes

Utiliza la clasificación COM para transmitir el conjunto de registros desconectados

Transmite un DataSet con un archivo XML

Transmisión de datos a traves de Firewalls

Problemático 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

Introducción a ADO.NETObjetos de datos .NET

.NET Data Provider.NET Data Provider

DataReaderDataReader

CommandCommandConnectionConnection

SyncSync

Controls,Controls,Designers,Designers,

Code-gen, etcCode-gen, etc

DataSetDataSet

XmlReaderXmlReader

XmlText-XmlText-ReaderReader

XmlNode-XmlNode-ReaderReader

XSL/T, X-Path,XSL/T, X-Path,Validation, etcValidation, etc

XmlData-XmlData-DocumentDocument

DataAdapterDataAdapter

Introducción a ADO.NETObjetos de datos .NET

Agenda

• Introducción a ADO.NET

• Programación con ADO.NET

• Soporte XML

• Funciones avanzadas

• ¿Cuándo utilizar qué?

Programación con ADO.NET..NET Data Provider

• Administra la interacción a una fuente de datos – Administrado equivalente a capa OLE DB

– Expone directamente las interfaces del consumidor

– Específico para (optimizada para) DataSource

• Modelo de objeto de .NET Data Provider– Conexión

– Comando

– DataReader

– DataAdapter

• 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

Programación con ADO.NET..NET Data Provider

Programación con ADO.NETConexión

• Representa una conexión a la Fuente de datos

• En una conexión, usted puede…– Personalizar la conexión a la base de datos– Iniciar, comprometer y abortar transacciones

• Equivalente al objeto ADODB.Connection

// Ejemplo en C#// Ejemplo en C#

//Especificar el //Especificar el NamespaceNamespace System.Data.SQLSystem.Data.SQLUsing System.Data.SqlClient;Using System.Data.SqlClient;

// Crear una instancia del objeto SQLConnection// Crear una instancia del objeto SQLConnectionSQLConnection cnn = new SQLConnection();SQLConnection cnn = new SQLConnection();

// Definir la cadena de conexión// Definir la cadena de conexióncnn.ConnectionString = cnn.ConnectionString = "server=localhost;uid=sa;database=pubs";"server=localhost;uid=sa;database=pubs";

//Abrir la conexión//Abrir la conexióncnn.Open();cnn.Open();

Programación con ADO.NETConexión

• 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 información de parámetros para ese

comando– Recuperar valores de retorno de la ejecución del

comando

• Corresponde al objeto ADODB.Command• Puede contener parámetros

– Valores que se van a utilizar cuando se ejecute el enunciado

Programación con ADO.NETComando

• ExecuteNonQuery

• ExecuteReader

• ExecuteScalar

• ExecuteXmlReader (únicamente para el objeto SqlCommand)

Programación con ADO.NETComando

• Acceso a datos rápido, únicamente hacia delante, únicamente de lectura

• Funciona como un socket

• Permite un acceso escrito de manera sólida

• Debe ser cerrado

Programación con ADO.NETDataReader

• Almacén 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 explícito

– Objeto remoto, desconectado– Índice en forma de arreglo

• No hay conocimiento de Fuente de datos o Propiedades– Modelo común sobre datos heterogéneos– Características de rendimiento predecibles

Programación con ADO.NETDataSet

DataSetDataSet

DataTableDataTable

DataTableDataTable

DataRowDataRow

DataColumnDataColumn

RelationesRelationes

RestriccionesRestriccionesEsquema XML Esquema XML

Programación con ADO.NETDataSet

• ¿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 también pueden presentar en

cascada varios cambios de la fila padre hacia las filas hijo

Programación con ADO.NETDataRelation

• Clase generada al momento del diseño– Hereda de DataSet– Esquema codificado en la clase

• Beneficios– IntelliSense– Verificación de tipos en tiempo de compilación– Código legible, conciso

Programación con ADO.NETTyped DataSet

• Administra el Intercambio de datos entre DataSet y la Fuente de datos– Llenar (DataSet o DataTable)– Actualizar (DataSet o DataTable)

• Ofrece Cruces de información entre tablas y columnas

• El usuario puede anular los comandos Insertar / actualizar / eliminar– Componente de autogeneración disponible

• Permite que un único DataSet se llene de varios Orígenes de datos diferentes

Programación con ADO.NETDataAdapter

DataAdapterDataAdapter

SelectCommandSelectCommand

InsertCommandInsertCommand

UpdateCommandUpdateCommand

DeleteCommandDeleteCommand

TableMappingsTableMappings

Base de datosBase de datos

DataSetDataSet

Programación con ADO.NETDataAdapter

// Ejemplo en C#// Ejemplo en C#

// Crear un DataAdapter// Crear un DataAdapter

SQLDataAdapter objDataAdapter = new SQLDataAdapter(SQLDataAdapter objDataAdapter = new SQLDataAdapter(

"Select * from authors",cnn);"Select * from authors",cnn);

  

// Cargar los datos en el DataSet// Cargar los datos en el DataSet

objDataAdapter.Fill(pubs, "Authors");objDataAdapter.Fill(pubs, "Authors");

  

// hacer cambios de datos de clientes en el dataset// hacer cambios de datos de clientes en el dataset

pubs.Tables["Authors"].Rows[0]["au_lname"]="smith";pubs.Tables["Authors"].Rows[0]["au_lname"]="smith";

objDataAdapter.Update(pubs, "Authors");objDataAdapter.Update(pubs, "Authors");

Programación con ADO.NETDataAdapter

Programación con ADO.NETRecursos para DataBinding

• DataReader

• DataTable

• DataView

• DataSet

• Arreglo

• Colección

• IList

Programación con ADO.NETDataBinding

• DataView– Concibe a ésta como una vista en DataTable– Permite establecer una solicitud de clasificación y Filtro

en una vista de la tabla– Puede crear cualquier número de DataViews en una

tabla para permitir diferentes vistas de la misma tabla

Demostración 1DataSet, DataAdapter y

DataReader

Agenda

• Introducción a ADO.NET

• Programación con ADO.NET

• Soporte XML

• Funciones avanzadas

• ¿Cuándo utilizar qué?

Soporte XMLADO.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, unión de control, acceso

relacional sólidos de datos XML– Permite herramientas XML (validación de esquemas,

XSL/T, consultas Xpath) contra datos relacionales– Preserva una fidelidad total de documentos XML

Soporte XMLADO.NET y XML

// Ejemplo en C#// Ejemplo en C#

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

// Obtener un XmlNavigator para el XmlDataDocument// Obtener un XmlNavigator para el XmlDataDocumentDataDocumentNavigator xmlNavigator = new DataDocumentNavigator xmlNavigator = new

DataDocumentNavigator(xmlDocument);DataDocumentNavigator(xmlDocument);

// Obtener todos los autores de CA// Obtener todos los autores de CAxmlNavigator.Select("//Authors[state='CA']/au_lname");xmlNavigator.Select("//Authors[state='CA']/au_lname");

// Mostrar todos los apellidos de autores// Mostrar todos los apellidos de autoreswhile(xmlNavigator.MoveToNextSelected())while(xmlNavigator.MoveToNextSelected()){{

Console.WriteLine("Name = " + xmlNavigator.InnerText);Console.WriteLine("Name = " + xmlNavigator.InnerText);}}

• DataSet ofrece manejo directo de documentos y esquemas XML– ReadXml()– ReadXmlSchema()– WriteXml()– WriteXmlSchema()

Soporte XMLADO.NET y XML

Soporte XMLSQLXML

• SQLXML Managed Classes 3.0– SqlXmlCommand– SqlXmlParameter– SqlXmlAdapter

Demontración 2Soporte XML

Agenda

• Introducción a ADO.NET

• Programación con ADO.NET

• Soporte XML

• Funciones avanzadas

• ¿Cuándo utilizar qué?

Funciones avanzadasConnectionPooling

• El proveedor OLE DB utiliza agrupación de sesiones tradicional OLEDB

• El proveedor de clientes SQL utiliza agrupación de sesiones basada en COM+

// Ejemplo en C#// Ejemplo en C#SqlConnection conn = new SqlConnection();SqlConnection conn = new SqlConnection();conn.ConnectionString = “Integrated Security=SSPI; Initial conn.ConnectionString = “Integrated Security=SSPI; Initial

Catalog=Northwind”Catalog=Northwind”conn.Open();conn.Open(); // Se crea el Pool A;// Se crea el Pool A;

SqlConnection conn = new SqlConnection();SqlConnection conn = new SqlConnection();conn.ConnectionString = “Integrated Security=SSPI; Initial conn.ConnectionString = “Integrated Security=SSPI; Initial

Catalog=pubs”Catalog=pubs”conn.Open();conn.Open(); // Se crea el Pool B ya que la cadena de // Se crea el Pool B ya que la cadena de

conexión es diferenteconexión es diferente

SqlConnection conn = new SqlConnection();SqlConnection conn = new SqlConnection();conn.ConnectionString = “Integrated Security=SSPI; Initial conn.ConnectionString = “Integrated Security=SSPI; Initial

Catalog=Northwind”Catalog=Northwind”conn.Open();conn.Open(); // Se usa el Pool A// Se usa el Pool A

Funciones avanzadasConnectionPooling

Funciones avanzadasTransacciones distribuidas

• Para utilizar las transacciones distribuidas:– Utilice System.EnterpriseServices– Cree un ServicedComponent para ofrecer

soporte para transacciones automático– Agregue funciones al ServicedComponents– Ejecute transacciones en el

ServicedComponents

Funciones avanzadasManejo 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 aún cuando haya sido transferido utilizando XML O Servicios Web

Demostración 3Funciones avanzadas

Agenda

• Introducción a ADO.NET

• Programación con ADO.NET

• Soporte XML

• Funciones avanzadas

• ¿Cuándo utilizar qué?

¿Cuándo utilizar qué?Consideraciones

• Acceso a datos conectados

• Acceso a datos desconectados

• Vista XML de datos relacionales

¿Cuándo utilizar qué?Acceso a datos conectados

• Proveedores administrados– Conexión, operación

• Conectar a DataSource• Iniciar / terminar transacciones

– Comando, parámetros• 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

¿Cuándo utilizar qué?Acceso a datos desconectados

• DataSet– Datos de aplicación– Resultados remotos

• SOAP, WebMethods, Remoting– Resultados de memoria caché

• Caché ASP.NET– Resultados persistentes

• Guardar datos como XML, esquema como XSD– Interacción del usuario

• Desplazar, clasificar, filtrar– DataView, DataViewManager

• Unir controles Windows

¿Cuándo utilizar qué?Acceso de datos XML

• XML– XmlDocument

• XmlDataDocument• Implementa el núcleo de nivel 1 y 2 del W3C DOM

– XPathNavigator• Ofrece acceso aleatorio de sólo lectura

– XslTransform• Soporta sintaxis XSLT 1.0

Resumen de la sesión

• Una evolución natural de ADO

• Diseñado para trabajar con XML

• Integrado estrechamente con el marco .NET

• Ofrece mecanismos rápidos y eficientes para acceso a datos conectados y desconectados

Para mayor información…

• 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 PressRecursos esenciales para desarrolladores

Ahora puede Ahora puede crear sus propios libros personalizados crear sus propios libros personalizados MS Press books enMS Press books en

mspress.microsoft.com/custombookmspress.microsoft.com/custombookEscoja entre Windows 2000, SQL Server 200, Exchange 2000, Office 2000 Escoja entre Windows 2000, SQL Server 200, Exchange 2000, Office 2000

y XMLy XML

Créelo y después pídalo en versión MS Reader, PDF o impresaCréelo y después pídalo en versión MS Reader, PDF o impresa

Capacitación Capacitación & Eventos& Eventos

MSDN Training, Tech-Ed, PDC, MSDN Training, Tech-Ed, PDC, Developer Days, MSDN/Eventos en el Developer Days, MSDN/Eventos en el sitiositio

MSDNRecursos esenciales para desarrolladores

Servicios de Servicios de suscripciónsuscripción

Información Información en líneaen línea

Programas de Programas de membresíamembresía

Publicaciones Publicaciones impresasimpresas

Biblioteca, Profesional, UniversalBiblioteca, Profesional, UniversalProporcionado vía CD-ROM, DVD, WebProporcionado vía CD-ROM, DVD, Web

MSDN Online, MSDN FlashMSDN Online, MSDN Flash

Grupos de usuarios MSDN Grupos de usuarios MSDN

MSDN MagazineMSDN MagazineMSDN NewsMSDN News

¿Dónde puedo obtener MSDN?

• Visite MSDN en línea en msdn.microsoft.com

• Regístrese para el Boletín de noticias por correo electrónico MSDN Flash en msdn.microsoft.com/resources/msdnflash.asp

• Conviértase en un suscriptor del CD de MSDN en msdn.microsoft.com/subscriptions

• Asista a más eventos de MSDN

ANEXO

• Application Blocks– Data Access

– Exception Management

Data Access Application Block• Simplifies calling ADO.NET SqlClient

• Stored procedure parameter management– Caches s. proc. parameter definitions– Cache can be loaded manually (enforcing type

manually) or automatically ‘on the fly’

• Simplifies returning many formats– Get DataSets, DataReaders, Scalars, XmlReaders –

all in one line of code

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

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

Data Access Application Block

Data Access Application Block

SqlHelper

ExecuteNonQuery

ExecuteDataset

ExecuteReader

ExecuteScalar

ExecuteXmlReader

SqlHelperParameterCache

CacheParameterSet

GetCachedParameterSet

GetSpParameterSet

Data Access Client

T-SQL Statement orStored Procedure

int

DataSet

SqlDataReader

object

XmlReader

SqlParameter Array

Data Access Application Block

SqlHelper

ExecuteNonQuery

ExecuteDataset

ExecuteReader

ExecuteScalar

ExecuteXmlReader

SqlHelperParameterCache

CacheParameterSet

GetCachedParameterSet

GetSpParameterSet

Data Access Client

T-SQL Statement orStored Procedure

int

DataSet

SqlDataReader

object

XmlReader

SqlParameter Array

• 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

Data Access Application Block

Demostración 4DAAB

Usando el “Data Access Application Block”