Download Advanced ADO.NET

Document related concepts

ADO.NET wikipedia , lookup

Language Integrated Query wikipedia , lookup

ADO.NET Entity Framework wikipedia , lookup

ADO.NET Data Services wikipedia , lookup

SQL Server Compact wikipedia , lookup

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”