ADO.NET Diego Casali SE Región Córdoba y NOA Microsoft de Argentina.
-
Upload
porfirio-marzo -
Category
Documents
-
view
11 -
download
2
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”