Download Advanced ADO.NET
Document related concepts
Transcript
ADO .NET Diego Casali SE Región Córdoba y NOA Microsoft 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.NET Comparación entre ADO y ADO.NET Función ADO ADO.NET Representación de RecordSet puede contener una datos residentes en tabla la memoria 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.NET Comparació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.NET Objetos de datos .NET Controls, Designers, Code-gen, etc XSL/T, X-Path, Validation, etc DataSet Sync DataAdapter DataReader Command Connection .NET Data Provider XmlDataDocument XmlReader XmlText- XmlNodeReader Reader Introducción a ADO.NET Objetos 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 Programación 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 Programación con ADO.NET Conexió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 Programación con ADO.NET Conexión // 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 conexión cnn.ConnectionString = "server=localhost;uid=sa;database=pubs"; //Abrir la conexión cnn.Open(); Programación 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 parámetros – No necesariamente SQL – 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 – Valores que se van a utilizar cuando se ejecute el enunciado Programación con ADO.NET Comando • ExecuteNonQuery • ExecuteReader • ExecuteScalar • ExecuteXmlReader (únicamente para el objeto SqlCommand) Programación con ADO.NET DataReader • 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.NET DataSet • • Almacén en memoria para datos del cliente Vista relacional de datos • • Persisten los datos y el esquema como XML Modelo desconectado explícito • – Tablas, columnas, filas, restriciones, relaciones – 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.NET DataSet DataSet DataTable DataColumn DataTable DataRow Relationes Esquema XML Restricciones Programación 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 también pueden presentar en cascada varios cambios de la fila padre hacia las filas hijo Programación con ADO.NET Typed DataSet • 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.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 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.NET DataAdapter DataAdapter Base de datos SelectCommand InsertCommand UpdateCommand DeleteCommand TableMappings DataSet Programación 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"); Programación con ADO.NET Recursos para DataBinding • DataReader • DataTable • DataView • DataSet • Arreglo • Colección • IList Programación con ADO.NET DataBinding • 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 1 DataSet, DataAdapter y DataReader Agenda • Introducción a ADO.NET • Programación con ADO.NET • Soporte XML • Funciones avanzadas • ¿Cuándo 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, 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 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 Demontración 2 Soporte XML Agenda • Introducción a ADO.NET • Programación con ADO.NET • Soporte XML • Funciones avanzadas • ¿Cuándo utilizar qué? Funciones avanzadas ConnectionPooling • El proveedor OLE DB utiliza agrupación • de sesiones tradicional OLEDB El proveedor de clientes SQL utiliza agrupación 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 conexión 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 automático – 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 aún cuando haya sido transferido utilizando XML O Servicios Web Demostración 3 Funciones 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 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 Créelo y después pídalo en versión MS Reader, PDF o impresa MSDN Recursos esenciales para desarrolladores Servicios de suscripción Biblioteca, Profesional, Universal Proporcionado vía CD-ROM, DVD, Web Información en línea MSDN Online, MSDN Flash Capacitación & Eventos MSDN Training, Tech-Ed, PDC, Developer Days, MSDN/Eventos en el sitio Publicaciones impresas MSDN Magazine MSDN News Programas de membresía Grupos de usuarios MSDN ¿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 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’ • Simplifies returning many formats • Simplifies calling with many sources – – – 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 Client SqlHelper ExecuteNonQuery T-SQL Statement or Stored Procedure ExecuteDataset ExecuteReader int ExecuteScalar DataSet ExecuteXmlReader SqlDataReader SqlHelperParameterCache object XmlReader CacheParameterSet GetCachedParameterSet SqlParameter Array 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 Demostración 4 DAAB Usando el “Data Access Application Block”