Ado.Net 3.0Cristian Sanchez FloresCristian Sanchez FloresMCP, MCTS, MCPD, MCTMCP, MCTS, MCPD, [email protected]@gmail.com
Visual Studio 2008
Introducción al Acceso de Introducción al Acceso de DatosDatos
Para el Almacenamiento de Datos se Para el Almacenamiento de Datos se emplea un metodo especifico de emplea un metodo especifico de construir una unidad de informacion .construir una unidad de informacion .Los medios de almacenamiento de Los medios de almacenamiento de datos pueden venir en diferentes datos pueden venir en diferentes formatos, entre ellos podemos formatos, entre ellos podemos mencionar:mencionar:
Introducción al Acceso de Introducción al Acceso de DatosDatos
Tipo de Tipo de AlmacenamienAlmacenamien
toto
CaracteristicasCaracteristicas EjemploEjemplo
No EstructuradoNo Estructurado Los Datos no tienen un orden Los Datos no tienen un orden LogicoLogico
Memorandus simples.Memorandus simples.
Estructurado, No Estructurado, No JerarquicoJerarquico
Los datos estan separadosen Los datos estan separadosen unidades, pero las unidades se unidades, pero las unidades se encuentran estrictamente encuentran estrictamente ordenados.ordenados.
Archivos separados por Archivos separados por comas o caracteres tab, comas o caracteres tab, hojas electronicas de hojas electronicas de Excel, etc.Excel, etc.
JerarquicosJerarquicos Los datos estan organizados en Los datos estan organizados en una estructura tipo arbol, donde una estructura tipo arbol, donde los nodos pueden contener otros los nodos pueden contener otros nodosnodos
Documentos XMLDocumentos XML
Base de Datos Base de Datos RelacionalRelacional
Los datos estan organizados en Los datos estan organizados en tablas, con columnas que tablas, con columnas que contienen un tipo especifico de contienen un tipo especifico de datos y las filas que contienen un datos y las filas que contienen un simple registro. Las tablas pueden simple registro. Las tablas pueden relacionarse con otras tablas que relacionarse con otras tablas que contengan datos comunes.contengan datos comunes.
SQL Server, Oracle, SQL Server, Oracle, Microsoft Access.Microsoft Access.
Base de Datos Base de Datos Orientada a Orientada a ObjetosObjetos
Los datos estan organizados como Los datos estan organizados como objetosobjetos
Objectivity/DBObjectivity/DB
Introducción al Acceso de Introducción al Acceso de DatosDatos
ADO .NET, puede soportar el acceso a ADO .NET, puede soportar el acceso a cualquiera de los tipos de repositorios cualquiera de los tipos de repositorios que se especificaron en la tabla que se especificaron en la tabla anterior.anterior.ADO .NET, puede trabajar en dos ADO .NET, puede trabajar en dos entornos de trabajo:entornos de trabajo:
Entorno ConectadoEntorno ConectadoEntorno DesconectadoEntorno Desconectado
Entorno ConectadoEntorno ConectadoDurante mucho tiempo las Durante mucho tiempo las aplicaciones que requerian el empleo aplicaciones que requerian el empleo de datos lo hacian a traves de un de datos lo hacian a traves de un entorno conectado de datos, lo cual entorno conectado de datos, lo cual significa que un usuario y/o aplicacion significa que un usuario y/o aplicacion esta conectado al origen de datos esta conectado al origen de datos constantemente.constantemente.Un escenario conectado ofrece como Un escenario conectado ofrece como beneficio:beneficio:
Un entorno seguro de facil Un entorno seguro de facil mantenimiento.mantenimiento.Se puede controlar facilmente la Se puede controlar facilmente la concurrencia.concurrencia.
Entorno ConectadoEntorno ConectadoPero a su vez este modo de trabajo Pero a su vez este modo de trabajo nos puede presentar algunas nos puede presentar algunas desventajas:desventajas:
Requiere de una conexion de Red Requiere de una conexion de Red Permanente.Permanente.Afecta la escabilidad de la aplicación.Afecta la escabilidad de la aplicación.
Entorno DesconectadoEntorno DesconectadoUn entorno desconectado permite al Un entorno desconectado permite al usuario no estar conectado usuario no estar conectado constantemente al servidor a la base constantemente al servidor a la base de datos. Los usuarios moviles que de datos. Los usuarios moviles que emplean que emplean computadoras emplean que emplean computadoras portatiles o algun dispositivo PDA son portatiles o algun dispositivo PDA son los principales usuarios de entornos los principales usuarios de entornos desconectados.desconectados.
Entorno DesconectadoEntorno DesconectadoUn entorno desconectado provee las Un entorno desconectado provee las siguientes ventajas:siguientes ventajas:
El usuario puede trabajar todo el tiempo El usuario puede trabajar todo el tiempo que lo considere necesario, y puede que lo considere necesario, y puede conectarse al origen de datos en el conectarse al origen de datos en el momento que requiera procesar su momento que requiera procesar su información.información.Otros usuarios pueden emplear la Otros usuarios pueden emplear la conexion.conexion.Un entorno desconectado provee Un entorno desconectado provee escabilidad y performance a las escabilidad y performance a las aplicaciones.aplicaciones.
Entorno DesconectadoEntorno DesconectadoUn entorno desconectado provee las Un entorno desconectado provee las siguientes desventajas:siguientes desventajas:
Los datos no estan actualizados siempreLos datos no estan actualizados siempreLos conflictos al actualizar datos pueden Los conflictos al actualizar datos pueden ocurrir y deben solucionarse.ocurrir y deben solucionarse.
Modelos de Modelos de Aplicaciones de Aplicaciones de Acceso a DatosAcceso a Datos
Modelos de Aplicaciones Modelos de Aplicaciones de Acceso a Datosde Acceso a Datos
Los modelos de aplicaciones de Los modelos de aplicaciones de acceso a datos están relacionados a la acceso a datos están relacionados a la evolución de las aplicaciones y evolución de las aplicaciones y computadores desde la alta computadores desde la alta distribución.distribución.Debido a que el numero de usuarios y Debido a que el numero de usuarios y la cantidad de datos se incrementa, el la cantidad de datos se incrementa, el modelo de acceso de datos puede modelo de acceso de datos puede determinarse desde un simple usuario determinarse desde un simple usuario sobre una aplicación sencilla hasta sobre una aplicación sencilla hasta múltiples usuarios consultando múltiples usuarios consultando información sobre Internet.información sobre Internet.
Modelo de CapasModelo de CapasUna capa es un nivel logico sobre el Una capa es un nivel logico sobre el cual residen los componentes de una cual residen los componentes de una aplicación.aplicación.Las capas pueden residir sobre una o Las capas pueden residir sobre una o mas computadoras o capas fisicas.mas computadoras o capas fisicas.El numero de capas esta referido al El numero de capas esta referido al numero de niveles no al numero de numero de niveles no al numero de computadores sobre el cual se puede computadores sobre el cual se puede distribuir los servicios.distribuir los servicios.
Modelo de CapasModelo de CapasLas capas comunmente empleadas en Las capas comunmente empleadas en el desarrollo son:el desarrollo son:
ClienteCliente: Tambien conocida como capa de : Tambien conocida como capa de presentación o servicios de usuario. Esta presentación o servicios de usuario. Esta capa contiene la interfase con el usuario.capa contiene la interfase con el usuario.NegociosNegocios: contiene la logica que : contiene la logica que intereactua con el origen de datos, intereactua con el origen de datos, contiene la parte de la aplicación que contiene la parte de la aplicación que interactua con los datos.interactua con los datos.DatosDatos: contiene la información que la : contiene la información que la capa de negocios emplea en las capa de negocios emplea en las aplicaciones.aplicaciones.InteroperatibilidadInteroperatibilidad: contiene la logica que : contiene la logica que permite la interaccion entre aplicaciones permite la interaccion entre aplicaciones que corren sobre diferentes sistemas que corren sobre diferentes sistemas operativos o que emplean diferentes operativos o que emplean diferentes tipos de datos, por ejemplo XML Web tipos de datos, por ejemplo XML Web Service.Service.
1 Capa – Aplicación 1 Capa – Aplicación MoliticaMoliticaEste modelo tipicamente involucra un Este modelo tipicamente involucra un
solo usuario y todas las capas sobre solo usuario y todas las capas sobre un mismo computador. un mismo computador. Ventajas:Ventajas: Debido a que todo se Debido a que todo se encuentra en un solo lugar, todos los encuentra en un solo lugar, todos los componentes son facilmente componentes son facilmente accesibles.accesibles.Desventajas:Desventajas: La actualizacion de los La actualizacion de los Programas requiere que el codigo Programas requiere que el codigo fuente sea modificado, recompilado y fuente sea modificado, recompilado y redistribuido por cada usuario.redistribuido por cada usuario.
2 Capas – Cliente / 2 Capas – Cliente / ServidorServidorLa capa de usuario y la capa de La capa de usuario y la capa de
negocios residen sobre una capa, los negocios residen sobre una capa, los servicios de datos en otra. servicios de datos en otra. Ventajas:Ventajas: Provee cierta separacion de Provee cierta separacion de funciones.funciones.Desventajas:Desventajas: Dificultad para escala Dificultad para escala debido a que el cliente contiene las debido a que el cliente contiene las capas de usuario y de negocio. capas de usuario y de negocio. Presentan problemas para el Presentan problemas para el mantenimiento y distribucion.mantenimiento y distribucion.
3 Capas 3 Capas Cada servicio se encuentra en una Cada servicio se encuentra en una capa diferente. capa diferente. Ventajas:Ventajas: Una buena separación de Una buena separación de funciones. La capa de cliente se funciones. La capa de cliente se convierte en un “Cliente Ligero” convierte en un “Cliente Ligero” debido a que contiene solo la logica debido a que contiene solo la logica cliente o presentacion.cliente o presentacion.Desventajas:Desventajas: Mas complejo de Mas complejo de administrar, la seguridad no es tan administrar, la seguridad no es tan flexible como en las aplicaciones de n flexible como en las aplicaciones de n capas.capas.
N Capas N Capas Una base de datos de nivel Una base de datos de nivel empresarial a la cual tienen acceso empresarial a la cual tienen acceso multiples clientes a traves de una multiples clientes a traves de una aplicación servidor. Nuevas capas aplicación servidor. Nuevas capas pueden agregarse segun se requiera. pueden agregarse segun se requiera. Ventajas:Ventajas: Permite que diferentes Permite que diferentes aplicaciones sobre distintos sistemas aplicaciones sobre distintos sistemas operativos puedan interactuar con el operativos puedan interactuar con el usuario y los datos.usuario y los datos.Desventajas:Desventajas: Usos de Seguridad. Usos de Seguridad.
Diseño: EvoluciónDiseño: Evolución Distribuida
Reglas
Presentación
Datos
3 Capas
Datos
Reglas
Presentación
Datos
Reglas
Presentación
Monolítica
Reglas
Presentación
Datos
Cliente/Servidor
Datos
Presentación
Reglas
Introducción a ADO.NETIntroducción a ADO.NETADO.NET es la evolución natural del ADO.NET es la evolución natural del modelo ADO; se basa en el desarrollo modelo ADO; se basa en el desarrollo de aplicaciones en de aplicaciones en nn capas, con XML capas, con XML como pilar central. como pilar central. ADO .NET es un nuevo conjunto de ADO .NET es un nuevo conjunto de clases que proporciona servicios de clases que proporciona servicios de acceso a datos a los acceso a datos a los programadores .NET. programadores .NET. Es una parte integral de la clase Es una parte integral de la clase Framework, que contiene toda la Framework, que contiene toda la biblioteca de clases que Microsoft biblioteca de clases que Microsoft ofrece con .NET, incluidas las clases ofrece con .NET, incluidas las clases fundamentales para los tipos de fundamentales para los tipos de sistemas anteriores, como los de E/S, sistemas anteriores, como los de E/S, redes, datos y XML.redes, datos y XML.
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO.NET y XMLADO.NET y XML
ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet ToolkitWindowsWindows
FormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……Visual Studio .NETVisual Studio .NET
ADO.netADO.net
Introducción a ADO.NETIntroducción a ADO.NET¿Qué es ADO.NET?¿Qué es ADO.NET?
Evolución natural de ADOEvolución natural de ADOInteroperabilidadInteroperabilidad
Basado en estándares como XML, XSDBasado en estándares como XML, XSDEscalabilidad Escalabilidad
Objetivos distribuidos, escenarios web Objetivos distribuidos, escenarios web desconectadosdesconectados
ModelosModelosArquitectura distribuida reemplaza Arquitectura distribuida reemplaza cliente/servidorcliente/servidorIntegración de datos de múltiples y Integración de datos de múltiples y diferentes fuentesdiferentes fuentes
IntroducciónIntroducciónArquitectura de ADO.NETArquitectura de ADO.NET
Capa NegocioCapa Negocio Capa DatosCapa Datos
Capa PresentaciónCapa PresentaciónWindows Forms
Web Forms
Business to Business
Data Object (Class)
DataSet
DataSetDataSet
InternetInternetIntranetIntranet Data AdapterData Adapter
Data AdapterData Adapter
(BizTalk, for example)
XML
MyApp.Exe
IE
Introducción a ADO.NETIntroducción a ADO.NETDatos gestionados. Visión Datos gestionados. Visión generalgeneral
Proveedor GestionadoProveedor Gestionado
DataReaderDataReader
CommandCommandConnectionConnection
SyncSync
Controles,Controles,Diseñadores,Diseñadores,Code-gen, etcCode-gen, etc
DataSetDataSet
XmlReaderXmlReaderXmlText-XmlText-ReaderReader
XmlNode-XmlNode-ReaderReader
XSL/T, X-Path,XSL/T, X-Path,Validación, etcValidación, etc
XmlData-XmlData-DocumentDocument
DataAdapterDataAdapter
Introducción a Introducción a ADO.NETADO.NETConceptos GeneralesConceptos Generales
El Modelo de Objeto de Ado .NetEl Modelo de Objeto de Ado .NetObjeto Data SetObjeto Data SetProveedores AdministradosProveedores Administrados
NameSpaces relacionados con NameSpaces relacionados con ADO .NetADO .Net
System.DataSystem.DataSystem.Data.OledbSystem.Data.OledbSystem.Data.SqlSystem.Data.SqlSystem.Data.SqlClientSystem.Data.SqlClient
Beneficios de ADO .NetBeneficios de ADO .NetInteroperabilidad por el uso de XMLInteroperabilidad por el uso de XML
Estandar abiertoEstandar abiertoLos Datos se Describen a si mismoLos Datos se Describen a si mismoSe usa en todas las transferencias de Se usa en todas las transferencias de datos en ADO .NETdatos en ADO .NET
Escabilidad por el DataSet Escabilidad por el DataSet desconectadodesconectado
No se mantienen conexiones por No se mantienen conexiones por periodos largosperiodos largosNo se producen Bloqueos en la Base de No se producen Bloqueos en la Base de DatosDatosTrabaja como la Web “Toco y me Voy”Trabaja como la Web “Toco y me Voy”
Facilidad de MantenimientoFacilidad de MantenimientoSeparacion de la Logica de datos y la Separacion de la Logica de datos y la interfaz del usuariointerfaz del usuario
Conceptos centrales y Conceptos centrales y arquitectura arquitectura
El modelo de Objetos de ADO.NET El modelo de Objetos de ADO.NET ObjetosObjetos DataSet DataSet Proveedores administrados Proveedores administrados
Namespaces relacionados con Namespaces relacionados con ADO.NET ADO.NET
System.Data System.Data System.Data.OleDb System.Data.OleDb System.Data.Internal System.Data.Internal System.Data.Sql System.Data.Sql System.Data.SqlTypesSystem.Data.SqlTypes
Namespace de DatosNamespace de DatosNamespaceNamespace DescripcionDescripcionSystem.DataSystem.Data Incluye las clases que hacen posible Incluye las clases que hacen posible
realizar el trabajo en modo realizar el trabajo en modo desconectado en la arquitectura de desconectado en la arquitectura de ADO .NETADO .NET
System.Data.CoSystem.Data.Commonmmon
Provee las clases e interfaces Provee las clases e interfaces heredadas que permiten la heredadas que permiten la implementación de los .NET Data implementación de los .NET Data Providers.Providers.
System.Data.SqlSystem.Data.SqlClientClient
Proveedor para SQL Server.Proveedor para SQL Server.
System.Data.OleSystem.Data.OleDbDb
Proveedor para OLE-DB para NET.Proveedor para OLE-DB para NET.
System.Data.SqlSystem.Data.SqlTypesTypes
Las clases y estructuras nativas de Las clases y estructuras nativas de SQL ServerSQL Server
System.XmlSystem.Xml Clases, interfases de XML.Clases, interfases de XML.
System DataSystem DataContiene las bases de ADO.NET Contiene las bases de ADO.NET Namespace centrado en Datos Namespace centrado en Datos Provee los mecanismos para trabajar Provee los mecanismos para trabajar con y sobre los datos con y sobre los datos
Clases y métodos para manipular los Clases y métodos para manipular los datos datos Habilidad para crear vistas de los datos Habilidad para crear vistas de los datos Formas para representar lógicamente los Formas para representar lógicamente los datos datos Permite la utilización de XML para ver, Permite la utilización de XML para ver, compartir y almacenar datos compartir y almacenar datos
Namespaces de DatosNamespaces de DatosPara poder emplear el SQLClient en el Para poder emplear el SQLClient en el editor de codigo de su aplicación debe editor de codigo de su aplicación debe colocar la siguiente instrucción:colocar la siguiente instrucción:
EjemploEjemploEl siguiente ejemplo permite poblar El siguiente ejemplo permite poblar una Dataset desde una Base de Datos una Dataset desde una Base de Datos de SQL Server y luego enlaza la de SQL Server y luego enlaza la información contenida en uno de los información contenida en uno de los DataTable del DataSet al origende DataTable del DataSet al origende datos del control dataGrid.datos del control dataGrid.
EjemploEjemplo
EjemploEjemplo
Accediendo a Entornos Accediendo a Entornos ConectadosConectados
En escenarios conectados los En escenarios conectados los recursos estan disponibles hasta recursos estan disponibles hasta cerrar la coneccion.cerrar la coneccion.
a.a. Abrir ConexiónAbrir Conexiónb.b. Ejecutar el ComandoEjecutar el Comandoc.c. Procesar las Filas de un ReaderProcesar las Filas de un Readerd.d. Cerrar el ReaderCerrar el Readere.e. Cerrar la ConexionCerrar la Conexion
Accediendo a Entornos Accediendo a Entornos DesconectadosDesconectados
En entornos desconectados los En entornos desconectados los recursos no estan disponibles recursos no estan disponibles mientras se procesa la informacion.mientras se procesa la informacion.
a.a. Abrir ConexiónAbrir Conexiónb.b. Poblar el DataSetPoblar el DataSetc.c. Cerrar la ConexionCerrar la Conexiond.d. Procesar el DataSetProcesar el DataSete.e. Abrir la ConexiónAbrir la Conexiónf.f. Actualizar el Origen de DatosActualizar el Origen de Datosg.g. Cerrar la ConexionCerrar la Conexion
Modelo de ObjetosModelo de ObjetosDataSetDataSetProveedores Administrados Proveedores Administrados
Ciclo de Vida del DataSetCiclo de Vida del DataSet
OriginalDataStore
DataSet
Table1
Table2
Establece las Establece las relacionesrelaciones
DataSet
Table1
Table2
Hace cambios a Hace cambios a los datoslos datos
DataSetTable1
Table2
Actualiza los cambios Actualiza los cambios con el Managedcon el ManagedProviderProvider
Extrae tablasExtrae tablasCon el ManagedCon el Managed
ProviderProvider
Ciclo de Vida del DataSetCiclo de Vida del DataSetDataSet
Table1
Table2
DataSet
Table1
Table2
DataSetTable1
Table2
OriginalDataStore
Establece las relaciones
Hace cambios a los datos
Actualiza los cambios Actualiza los cambios con el Managedcon el ManagedProviderProvider
Extrae tablasExtrae tablasCon el ManagedCon el Managed
ProviderProvider
Operaciones Operaciones ConectadasConectadas
Ciclo de Vida del DataSetCiclo de Vida del DataSetDataSet
Table1
Table2
DataSet
Table1
Table2
DataSetTable1
Table2
OriginalDataStore
Establece las Establece las relacionesrelaciones
Hace cambios a Hace cambios a los datoslos datos
Actualiza los cambios con el ManagedProvider
Extrae tablasCon el Managed
ProviderOperaciones Operaciones DesconectadasDesconectadas
System.Data System.Data Contiene las bases de ADO.NET Contiene las bases de ADO.NET Namespace centrado en Datos Namespace centrado en Datos Provee los mecanismos para trabajar Provee los mecanismos para trabajar con y sobre los datos con y sobre los datos
Clases y métodos para manipular los Clases y métodos para manipular los datos datos Habilidad para crear vistas de los datos Habilidad para crear vistas de los datos Formas para representar lógicamente los Formas para representar lógicamente los datos datos Permite la utilización de XML para ver, Permite la utilización de XML para ver, compartir y almacenar datoscompartir y almacenar datos
System.DataSystem.Data
DataTable
DataRow
DataRelation
DataColumn
DataSetView
DataSet
Contiene las clases “principales” de ADO.NETPersistencia en memoria de los datos
Persistencia en memoria de la tabla de la base de datos
Permite manipular una fila en un DataTable
Permite definir columnas en un DataTable
Puede relacionar 2 DataTables entre sí
Presenta una vista del DataSet
DataSet Tables
DataTable
System.Data y DataSet
Relations
DataRelation
DataRelation
DataRow(s)
DataColumn
Constraint(s)
DataTable
DataTable
DataView
System.Data - DataSet• Un repositorio en memoria de datos desde
un origen • Forma común de representar y manipular
datos Contendor universal No sólo para base de datos
• Representación lógica o física de los datos; depende de: La consulta / Conjunto de resultados Donde existen DataTables y Relations
• Diseñado para estar desconectado del origen Conectar, ejecutar la consulta, desconectar
• Se utiliza XML para leer y almacenar, tanto los datos como el Esquema
System.Data - DataSet
• Se usan colecciones para agregar Tablas y relaciones
• Propiedades importantes: Tables:
Devuelve la colección de objetos DataTable
Relations:Devuelve la colección de DataRelations
Relacionadas con XML
System.Data - DataSet
Contenedor Universal de datos DataSet: No sólo para bases de datos
System.Data - DataTable• Puede ser vinculado a una tabla física de una
base • Y relacionarla con otras a través de
DataRelations • Bloqueo concurrente optimista • Propiedades importantes:
Columns: Devuelve la colección de DataColumns como ColumnsCollection
Rows: Devuelve objetos DataRow como una RowsCollection
ParentRelations: Devuelve una RelationsCollection
Constraints: Devuelve la ConstraintsCollection de la tabla
DataSet: Devuelve el conjunto de datos de la DataTable
PrimaryKey: Obtiene los DataColumns que conforman la clave primaria de la tabla
System.Data—DataSet y DataTable
• Crear una DataTable y agregarla al DataSet
DataSet ds = new DataSet(); // Crear el objeto “Clientes”. DataTable dt= new DataTable( “Clientes” ); // Crear y agregar columnas // 1. Explícitamente DataColumn dc = new DataColumn( “ID”, Int16 ); dt.Columns.Add( dc ); // 2. Implícitamente. dt.Columns.Add( “Nombre”, String ); dt.Columns.Add( “Apellido”, String ); // Agregar el objeto DataTabla al DataSet ds.Tables.Add( dt );
System.Data - DataRelation • Utilizada para crear relaciones lógicas
Entre dos (2) objetos DataTable Requiere un objeto DataColumn de cada
DataTable El tipo de datos (DataType) de ambas
DataColumns debe ser el mismo No es posible relacionar un Int32 con un
String Se le asigna un nombre
DataRelation dr=new DataRelation _(“miRelacion”,...)
• Permite navegación por relaciones • RelationsCollection contiene todas las
DataRelations Se accede a través de la propiedad Relations
del DataSet
System.Data - DataRelation• Como crear un DataRelation:
Obtener los objetos DataColumn a relacionar
Crear y nombrar un DataRelation usando las columnas
Agregar la relación al DataSet// Obtener las columnas a utilizar...DataColumn colPadre, colHija; colPadre= DataSet.Tables["Clientes"].Columns["ID"];colHija = DataSet.Tables[“Pedidos“].Columns["IDCliente"];
// Crear el DataRelation llamado “CliPedidos”... DataRelation dr; dr = New DataRelation(“CliPedidos", colPadre, colHija); // Agregar la relación al DataSet... ds.Relations.Add( dr );
DataSet Tables
DataTable
DataSet, DataRelation, Data…Views
Relations
DataRelation
DataRelation
DataRow(s)
DataColumn
Constraint(s)
DataTable
DataTable
DataView
Trabajando con Wizard Trabajando con Wizard propios del Visual Studio – propios del Visual Studio –
Ejemplo con la base de datos Ejemplo con la base de datos Northwind del Sql Server Northwind del Sql Server
20002000Generar una consulta con Generar una consulta con filtro, utilizando las tablas filtro, utilizando las tablas Orders y Order DetailsOrders y Order Details
EjemploEjemplo
DataSetDataSet
DataTableDataTable
DataTableDataTable
DataRowDataRow
DataColumnDataColumn
RelationsRelations
ConstraintsConstraintsXML SchemaXML Schema
DatasetDataset
Gestiona Intercambio De Datos Entre Gestiona Intercambio De Datos Entre DataSet y Data SourceDataSet y Data Source
Llena (DataSet o DataTable)Llena (DataSet o DataTable)Actualiza (DataSet o DataTable)Actualiza (DataSet o DataTable)
Provee Relaciones Entre Tablas Y Provee Relaciones Entre Tablas Y ColumnasColumnasUsuario Puede Saltarse Los Comandos Usuario Puede Saltarse Los Comandos Insert/Update/DeleteInsert/Update/Delete
Disponible Componente AutogenDisponible Componente AutogenPermite A Un Solo DataSet Ser Permite A Un Solo DataSet Ser Populado Desde Múltiples Populado Desde Múltiples DatasourcesDatasources
DataAdapterDataAdapter
DataAdapterDataAdapter
SelectCommandSelectCommand
InsertCommandInsertCommand
UpdateCommandUpdateCommand
DeleteCommandDeleteCommand
TableMappingsTableMappings
DatabaseDatabase
DataSetDataSet
DataAdapterDataAdapter
DataSetDataSet demodemo
ADO.NET y Proveedores Administrados
• Una colección de clases que permiten acceder a los orígenes de datos: Microsoft SQL Server™ 2000, SQL Server
7, y MSDE
Otros proveedores OLEDB Por ejemplo: Oracle
Establece la conexión entre los DataSets y el repositorio de los datos
• Dos proveedores base: OLEDB: Namespace
System.Data.OleDb SQL Server: Namespace
System.Data.Sql
Proveedores administrados
System.Data
.OleDb.SqlclientOleDbCommandOleDbConnectionOleDbDataReaderOleDbDataSetCommand
SqlCommandSqlConnectionSqlDataReader
SqlDataSetCommand
• Dependen deSystem.Data.InternalDataCollectionBase para varias clases heredadas
Las clases Data Las clases Data Provider .NETProvider .NET
XxxConnection, por ej., XxxConnection, por ej., SqlConnectionSqlConnection
XxxTransaction, por ej., SqlTransactionXxxTransaction, por ej., SqlTransactionXxxError, por ej., SqlErrorXxxError, por ej., SqlError
XxxCommand, por ejemplo, XxxCommand, por ejemplo, SqlCommandSqlCommand
XxxParameter, por ej., SqlParameterXxxParameter, por ej., SqlParameterXxxDataReader, por ej., XxxDataReader, por ej., SqlDataReaderSqlDataReaderXxxDataAdapter, por ej., XxxDataAdapter, por ej., SqlDataAdapterSqlDataAdapter
El modelo de objeto El modelo de objeto XxxDataAdapter XxxDataAdapter
sp_SELECT
XxxCommand
SelectCommand UpdateCommand InsertCommand DeleteCommand
XxxDataAdapter
XxxCommand XxxCommand XxxCommand
XxxConnection
sp_UPDATE sp_INSERT sp_DELETE
XxxDataReader
Evolucion de ADO hacia Evolucion de ADO hacia ADO .NETADO .NET
Connection
ADO
ADO .NET
Command
Recordset
XxxConnection
XxxCommand
DataSet
XxxTransaction
XxxDataReader
XxxDataAdapter
ADO .NET y XMLADO .NET y XMLADO .NET esta fuertemente integrado ADO .NET esta fuertemente integrado con XMLcon XML
2SQL query
XML Web Services
XML4 DataSetResults3
Data Source
Uso de XML en una aplicacion conectada con ADO .NET Cargar un XML en el arbol DOM , o usar DataReader
5 Updated XML DataSet 6 SQL updates
Request data1
Client
Usando XML en un entorno desconectado con ADO .NET
Conectando a un Conectando a un Origen de DatosOrigen de Datos
Que son los Data Que son los Data Providers .NET ?Providers .NET ?
Tipos de Data Providers .NETTipos de Data Providers .NET
SQL Server Data Provider .NET SQL Server Data Provider .NET OLE DB Data Provider .NET OLE DB Data Provider .NET ODBC Data Provider .NET ODBC Data Provider .NET
Cuál Data Provider Cuál Data Provider deberíamos usar ?deberíamos usar ?
SQL Server Data Provider .NET SQL Server Data Provider .NET OLE DB Data Provider .NET OLE DB Data Provider .NET ODBC Data Provider .NET ODBC Data Provider .NET Guía para elegir un data provider .NETGuía para elegir un data provider .NET
Defininiendo una Defininiendo una ConexionConexionTemas:Temas:
Seguridad en las Base de DatosSeguridad en las Base de Datos
Configurando un string de Configurando un string de conexion(connection string)conexion(connection string)
Seguridad en las Bases de Seguridad en las Bases de DatosDatos
Usando seguridad en SQL Server Usando seguridad en SQL Server
Usando Autenticación de Windows Usando Autenticación de Windows
Usando Modo Mixto (Autenticacion de Usando Modo Mixto (Autenticacion de Windows y Autenticacion de SQL )Windows y Autenticacion de SQL )
Configurando un string de Configurando un string de conexión(connection conexión(connection string)string)
Seteando un Connection StringSeteando un Connection StringProvider (solo para OLE DB )Provider (solo para OLE DB )Data SourceData SourceInitial CatalogInitial CatalogIntegrated SecurityIntegrated SecurityUser ID/PasswordUser ID/PasswordPersist Security InfoPersist Security Info
Visual Basic Example C# Example
Configurando un string de Configurando un string de conexión(connection conexión(connection string)string)
Dim myConnection as New Dim myConnection as New SqlClient.SqlConnection() SqlClient.SqlConnection()
myConnection.ConnectionString = "User myConnection.ConnectionString = "User ID=sa;” &_ID=sa;” &_
““Password=me2I81sour2;” & _ Password=me2I81sour2;” & _ ““Initial Catalog=Northwind;” & _ Initial Catalog=Northwind;” & _ ““Data Source=mySQLServer;” & _ Data Source=mySQLServer;” & _ ““Connection TimeOut=30;" Connection TimeOut=30;"
Construyendo Objetos Construyendo Objetos CommandCommand
QueQue ees s unun Objeto Objeto Command ?Command ?
Como crearComo crear un objetoun objeto Command Command
Que son los parametrosQue son los parametros en un en un Command Command ??
Como crearComo crear Parametros Parametros para un objetopara un objeto CommandCommand
Que es un ObjetoQue es un Objeto Command ?Command ?UnUn objeto objeto command command es un referencia es un referencia
a una sentencia a una sentencia SQL SQL o a un o a un stored stored procedureprocedureProPropiedadespiedades
(Name), Connection, CommandType, (Name), Connection, CommandType, CommandText, CommandText, ParametersParameters
MétodMétodoossExecuteScalar, ExecuteNonQuery, ExecuteScalar, ExecuteNonQuery, ExecuteReader, ExecuteXmlReaderExecuteReader, ExecuteXmlReader
CódCódigoigo de ejemplode ejemplo: Crea: Creandondo unun SqlCommand SqlCommand Dim cmCategories As SqlCommand = New SqlCommand( _Dim cmCategories As SqlCommand = New SqlCommand( _
"SELECT * FROM Categories", cnNorthwind)"SELECT * FROM Categories", cnNorthwind)
Como crear un Como crear un Stored Stored ProcedureProcedure
Server ExplorerServer ExplorerView, Server Explorer (Ctrl+Alt+S)View, Server Explorer (Ctrl+Alt+S)Crear una conexion a datosCrear una conexion a datosNuevo Stored ProcedureNuevo Stored ProcedureInsertar sentencias SQL ( Trans-SQL)Insertar sentencias SQL ( Trans-SQL)
Como crear un objetoComo crear un objeto Command ObjectCommand Object
Server ExplorerServer ExplorerView, Server Explorer (Ctrl+Alt+S)View, Server Explorer (Ctrl+Alt+S)
ToolboxToolboxUsUsarar SqlConnection SqlConnection uu OleDbConnection OleDbConnectionUsUsarar SqlCommand SqlCommand uu OleDbCommand OleDbCommand
DemoDemoProcedimientoProcedimientoAlmacenadoAlmacenado
Que son los Parametros ? Que son los Parametros ? IntroducciIntroduccióónn
Las sentencias SQL y los Las sentencias SQL y los stored stored procedures procedures tienen parametros de tienen parametros de entrada(input), salida(output) y valores entrada(input), salida(output) y valores de retorno(return value)de retorno(return value)A través de la colección parameters de A través de la colección parameters de los objetos command podemos los objetos command podemos configurar, dando valores y recuperar configurar, dando valores y recuperar estosestos paramet parametrosrosSqlParameter, OleDbParameterSqlParameter, OleDbParameter
PropPropiedadesiedadesParameterName, DbType, Size, DirectionParameterName, DbType, Size, Direction
Como crear Como crear ParametParametros ros para un objeto Cpara un objeto Commandommand
Como definir programaticamente los Como definir programaticamente los parámetrosparámetros
EEjemplojemploDim p1 As SqlParameter = New _Dim p1 As SqlParameter = New _
SqlParameter(“@CatName”, _SqlParameter(“@CatName”, _SqlDbType.NChar, 15)SqlDbType.NChar, 15)
p1.Direction = ParameterDirection.Outputp1.Direction = ParameterDirection.OutputcmdCountProds.Parameters.Add(p1)cmdCountProds.Parameters.Add(p1)
Graficamente con las herramientas Graficamente con las herramientas de de Visual Studio .NET Visual Studio .NET
EEjecutando objetosjecutando objetos Command Command que retornan que retornan un solo valorun solo valor
Porqué rPorqué retetornar un solo valor en un ornar un solo valor en un CommandCommand??
ComoComo ejejecutecutar un ar un Command Command que que devuelva un solo valordevuelva un solo valor
Como recuperar parametrosComo recuperar parametros Output Output yy Return ValuesReturn Values
Porqué retornar un solo Porqué retornar un solo valor en un valor en un Command?Command?
IntroducIntroduccciióónnADO .NET ADO .NET ees ms masas eficient eficientee queque een ADO, n ADO, donde se retorna un grupo de registrosdonde se retorna un grupo de registros
EEjemplosjemplosUniUnidades en dades en stock stock para un producto en para un producto en particularparticularCuantos Cuantos productproductooss hay hay??COUNT, MAX, MIN, AVERAGECOUNT, MAX, MIN, AVERAGE
Como ejecutarComo ejecutar unun Command Command que devuelve que devuelve un solo valorun solo valor
IntroducIntroduccciióónnExecuteScalarExecuteScalar ret retornaorna un un valvalor de tipor de tipo o ObjectObject
EEjemplojemplocmProducts.Parameters("@ProdID").Value = 42cmProducts.Parameters("@ProdID").Value = 42cnNorthwind.Open()cnNorthwind.Open()Dim qty As Integer = _Dim qty As Integer = _
CType(cmProducts.ExecuteScalar(), CType(cmProducts.ExecuteScalar(), Integer)Integer)cnNorthwind.Close()cnNorthwind.Close()
Como recuperar Como recuperar parametros parametros Output Output yy Return ValuesReturn Values
Como leer un parametro Como leer un parametro Output Output desde un objetodesde un objeto Command Command
cmd.Parameters("@CatName").Valuecmd.Parameters("@CatName").ValueComo obtener unComo obtener un Return Value Return Value de un de un Stored ProcedureStored Procedure
cmd.Parameters("@RETURN_VALUE").Valuecmd.Parameters("@RETURN_VALUE").Value
DemoDemoejecutar ejecutar
ProcedimientoProcedimientoss
EEjecutando jecutando Comandos Comandos que que devuelven filasdevuelven filasTemas a tratarTemas a tratar::
RetRetornando filasornando filasPropiedades y métodos de un Propiedades y métodos de un DataReader DataReader Como usar un objeto Como usar un objeto DataReader DataReader para para procesar un conjunto de resultadosprocesar un conjunto de resultados
RetRetoornrnando filasando filasDataReaderDataReader
Read-only, forward-onlyRead-only, forward-onlyEl métodoEl método ExecuteReader ExecuteReader
Devolviendo un Devolviendo un DataReaderDataReaderPor. Ej.Por. Ej. SqlDataReader, OleDbDataReader SqlDataReader, OleDbDataReader
Metodos y propiedades de Metodos y propiedades de un objeto un objeto DataReaderDataReader
Método Método Read Read Carga la proxima filaCarga la proxima filaDevuelve Devuelve True True si la fila existe osi la fila existe o False False si si no hay filasno hay filas
Método Método CloseClosePropiedad Propiedad ItemItemMétodos Métodos GetXxx , GetXxx , por ej.por ej., GetString, , GetString, GetInt32GetInt32
Como usar el DataReader Como usar el DataReader para procesar filas como para procesar filas como resultadoresultado
Usando el objeto DataReader Usando el objeto DataReader
Demo01Demo01yy
Demo02Demo02 DataReader DataReader
EEjecutando mjecutando multipleultipless sentencias sentencias SQL SQL TemasTemas::
PorquéPorqué usar musar multipleultiples sentenciass sentencias SQL ? SQL ?
ComoComo Proces Procesar mar multipleultiples sentenciass sentencias SQL SQL
Porqué usar multiples Porqué usar multiples sentencias sentencias SQL? SQL?
PerformancePerformanceGropGropo de tareaso de tareas rela relacionadascionadasEncapsulaEncapsular reglas de negociosr reglas de negocioseejejemplmploo/* a stored procedure with multiple SQL /* a stored procedure with multiple SQL
statements */statements */CREATE PROCEDURE dbo.IncreasePricesCREATE PROCEDURE dbo.IncreasePricesASAS
UPDATE Products SET UnitPrice = UnitPrice * UPDATE Products SET UnitPrice = UnitPrice * 1.021.02SELECT ProductName, UnitPrice FROM ProductsSELECT ProductName, UnitPrice FROM ProductsSELECT ProductName FROM Products SELECT ProductName FROM Products
WHERE Discontinued = 0WHERE Discontinued = 0
Como procesar multiples Como procesar multiples sentenciassentencias SQL SQL
Se puede consultar la cantidad Se puede consultar la cantidad de registros afectados de una de registros afectados de una sentenciasentencia DML DML con la propiedad con la propiedad RecordsAffected RecordsAffected
A cada próxima sentencia A cada próxima sentencia SELECT SELECT se puede acceder con se puede acceder con el metodoel metodo NextResult NextResult
DemoDemoDataReaderDataReader
Multiples Multiples ResultadosResultados
UsUsando DDL (ando DDL (Data Data Definition LanguageDefinition Language))
Que es DDL (Que es DDL (Data Definition LanguageData Definition Language))??
Como ejecutar un comando de Como ejecutar un comando de DDLLLL
Que es Que es Data Definition Data Definition Language?Language?
DefiniDefinicciióónnAutomatAutomatiza tareas de iza tareas de administracion de las bases de administracion de las bases de datosdatos
Sentencias Sentencias DDL DDL CREATE, ALTER, DROP, GRANT, CREATE, ALTER, DROP, GRANT, DENY, REVOKEDENY, REVOKE
EjemploEjemploCREATE PROCEDURE dbo.SummarizeProducts ASCREATE PROCEDURE dbo.SummarizeProducts AS
CREATE TABLE ProductSummaryCREATE TABLE ProductSummary( ProductName nvarchar(40),( ProductName nvarchar(40),
CategoryName nvarchar(15) )CategoryName nvarchar(15) )
Como ejecutar un Como ejecutar un comando DDLcomando DDL
Método Método ExecuteNonQueryExecuteNonQuery
RetRetornaorna c cantidad de filas afectadasantidad de filas afectadas
Visual Basic Example
Manipulando datos usando Manipulando datos usando DML(DML(Data Manipulation Data Manipulation LanguageLanguage))
Que el lenguaje DML(Que el lenguaje DML(Data Manipulation Data Manipulation LanguageLanguage))??
Como ejecutar comandos DMLComo ejecutar comandos DML
Que es DML(Que es DML(Data Data Manipulation LanguageManipulation Language))??
DefiniDefinicciióónnSentencias que modifican datos en una Sentencias que modifican datos en una base de datosbase de datos
Sentencias Sentencias DML DML INSERT, UPDATE, DELETEINSERT, UPDATE, DELETE
EjemploEjemploCREATE PROCEDURE dbo.InsertRegionCREATE PROCEDURE dbo.InsertRegion ( @RegID int,( @RegID int, @RegName nchar(50) )@RegName nchar(50) )ASAS
INSERT INTO Region VALUES (@RegID, @RegName)INSERT INTO Region VALUES (@RegID, @RegName)
Como ejecutar un Como ejecutar un comando DML(comando DML(Data Data Manipulation LanguageManipulation Language))
Ejecutar una sentencia Ejecutar una sentencia DMLDML
Método Método ExecuteNonQueryExecuteNonQuery
Errores al intentar Errores al intentar modificar datosmodificar datos
Errores mas Errores mas ComComunesunesIncorrectIncorrecto nombre de o nombre de objetobjetososServer Server no disponibleno disponibleProblemas de integridad en Problemas de integridad en los datoslos datosUsUsar una conexión antes de ar una conexión antes de abrirlaabrirlaInvalidInvalidoo tipo de tipo de datdatoo
DemoDemoComandosComandos
TransaccionalesTransaccionales
TransaccionesTransaccionesTemasTemas::
QueQue ees s una una TransacTransaccióción?n?Como se manejan lasComo se manejan las Transac Transacccionionees ?s ?Como trabaja una Como trabaja una TransacTransaccciióónn
Que es una Que es una TransacTransacccion?ion?Transacciones locales y Transacciones locales y distribuidasdistribuidas
Propiedades Propiedades ACID ACID Atomicidad (Atomicidad (AtomicityAtomicity))Consistencia(Consistencia(ConsistencyConsistency))Aislamiento(Aislamiento(IsolationIsolation))Durabilidad(Durabilidad(DurabilityDurability))
Como manejar una Como manejar una transaccion usando transaccion usando SQLSQL
Sentencias SQL para transacciones Sentencias SQL para transacciones BEGIN TRANS, COMMIT TRANS, BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANSROLLBACK TRANS
EjemploEjemplo/* Use a transaction to ensure consistency *//* Use a transaction to ensure consistency */BEGIN TRANSACTIONBEGIN TRANSACTIONINSERT INTO Account (AccountID, Amount, DebitCredit)INSERT INTO Account (AccountID, Amount, DebitCredit) VALUES (1234, 100, 'debit') VALUES (1234, 100, 'debit') INSERT INTO Account (AccountID, Amount, DebitCredit) INSERT INTO Account (AccountID, Amount, DebitCredit) VALUES (5678, 100, 'credit') VALUES (5678, 100, 'credit') IF (@@ERROR > 0)IF (@@ERROR > 0) ROLLBACK TRANSACTIONROLLBACK TRANSACTIONELSEELSE COMMIT TRANSACTIONCOMMIT TRANSACTION
Como manejar Como manejar transacciones usando transacciones usando ADO ADO .NET.NETXxxConnection, XxxConnection, ej.ej., , SqlConnectionSqlConnection
BeginTransactionBeginTransactionXxxTransaction, XxxTransaction, ej.ej., , SqlTransactionSqlTransaction
CommitCommitRollbackRollbackSave (solo en SqlTransaction)Save (solo en SqlTransaction)
Ver ejemploVer ejemploVisual Basic Example
System.Data - DataSet y XML
• El DataSet puede leer y escribir XML desde sus datos y del esquema O sea: es posible crear o modificar un DataSet
usando XML • Método de lectura con formato XML:
GetXml: Obtiene los datos del DataSet (incluyendo el esquema)
GetXmlSchema: obtiene el esquema XSD del DataSet
• Para escribir: WriteXml, WriteXmlSchema
System.Data - DataView• Crea múltiples vistas de los objetos
DataTable • Vinculable a controles • Propiedades importantes:
Item: Obtiene una fila de una tabla determinada
Table: Obtiene o asigna el objeto DataTable Sort: obtiene o asigna la/s columna/s y el
ordenamiento RowFilter: Obtiene o asigna la expresión para
filtrar la vista RowStateFilter: Indica o asigna el estado del
filtro None, Unchanged, New, Deleted,
ModifiedCurrent, y otros
System.Data - DataView
DataView vista1 = new DataView( miTabla ); DataView vista2 = new DataView( miTabla );
// La vista ordenada por Apellido vista1.Sort = “Apellido ASC”;
// Filtrar para ver sólo los modificados vista2.RowStateFilter= DataViewRowState.ModifiedOriginal; // Vincular a un control de usuario... DataGrid myGrid = new DataGrid(); myGrid.SetDataBinding( view1, “Clientes”); //...
• Creando objetos DataView
Recommended