Upload
jovita-del-cid
View
5
Download
2
Embed Size (px)
Citation preview
ADO.NET
Daniel A. SearaDirector Regional MSDNBuenos Aires – ARGENTINA
NDSoft
Objetivos
• Introducir Microsoft® ADO.NET• Mostrar la evolución de
ADO a ADO.NET• Introducir los componentes
primarios de ADO.NET
ADO.NET y el Marco.NETMicrosoft® .NET Framework
Motor de ejecución común (CLR)
Clases base
Web Services Interfaz de usuario
Datos y XML
ADO.NET XML ... ...
ADO vs. ADO.NET 1/2• ADO
Diseñado para acceso conectado Vinculado al modelo físico de los datos El RecordSet es el contenedor central de datos El RecordSet es una tabla que contiene todos
los datosObtener datos de más de una tabla u origen, requiere
un JOIN en la baseLos datos son “aplanados”: pierden sus relaciones y la
navegación suele ser secuencial Los tipos de datos se encuentran relacionados
con tipos COM/COM+ Los datos se comparten por “marshalling COM” Hay problemas para enviar información a través
de “murallas de fuego” (DCOM, datos binarios)
ADO vs. ADO.NET 2/2
• ADO.NET Diseñado para acceso desconectado ¡Se puede modelar la información por lógica! El DataSet reemplaza al RecordSet El DataSet puede contener múltiples tablas
No se requieren JOINSe preservan las relaciones: La navegación es relacional
Los tipos de datos sólo están vinculados al esquema de XML
No se requieren conversiones de tipos de datos XML, como HTML, es texto plano: “Pasa las
barreras”
Beneficios de ADO.NET• Interoperabilidad por el uso de XML
Estándar abierto Texto descifrable por “Humanos” Los datos se describen a sí mismos Se usa en todas las transferencias de datos
en ADO.NET• Escalabilidad por el DataSet
desconectado No se mantienen conexiones por períodos
largos No se producen “bloqueos” en la base de
datos Trabaja como la Web “Toco y me voy”
• Facilidad en el Mantenimiento Separación de la lógica de datos y la
interfaz del usuario
Conceptos centrales y arquitectura
• El modelo de Objetos de ADO.NETObjetos DataSetProveedores administrados
• Namespaces relacionados con ADO.NETSystem.Data System.Data.OleDbSystem.Data.InternalSystem.Data.SqlSystem.Data.SqlTypes
ADO.NET
Namespaces relacionados con ADO.NET
System.Data
.OleDb.Sql.SQLTypes .Internal
El modelo de objetos de ADO.NET
• DataSet• Proveedores administrados
System.Data 1/2
• Contiene las bases de ADO.NET• Namespace centrado en Datos• Provee los mecanismos para trabajar
con y sobre los datos Clases y métodos para manipular los datos Habilidad para crear vistas de los datos Formas para representar lógicamente los
datos Permite la utilización de XML para ver,
compartir y almacenar datos
System.Data 2/2
System.Data
DataTable
DataRow
DataRelation
DataColumn
DataSetView
DataSet
Contiene las clases “principales” de ADO.NET
Persistencia 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 1/3
• 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 2/3
• 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 3/3
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ícitamenteDataColumn 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 DataSetds.Tables.Add( dt );
System.Data - DataRelation 1/2
• 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 mismoNo es posible relacionar un Int32 con un String
Se le asigna un nombre (¡por el desarrollador!)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 2/2
• 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 );
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 Apellidovista1.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
DataSet Tables
DataTable
DataSet, DataRelation, Data…Views
Relations
DataRelation
DataRelation
DataRow(s)
DataColumn
Constraint(s)
DataTable
DataTable
DataView
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 MSDEOtros proveedores OLEDB
Por ejemplo: OracleEstablece la conexión entre los DataSets y
el repositorio de los datos• Dos proveedores base:
OLEDB: Namespace System.Data.OleDbSQL Server: Namespace System.Data.Sql
Proveedores administrados
System.Data
.OleDb.Sql
OleDbCommandOleDbConnectionOleDbDataReaderOleDbDataSetCommand
SqlCommandSqlConnectionSqlDataReader
SqlDataSetCommand
• Dependen deSystem.Data.InternalDataCollectionBase para varias clases heredadas
OleDbConnection y SqlConnection
• Representa una única sesión con un origen de datos
• Exponen funcionalidad de transacciones• Ejemplo de Conexión OleDbConnection:
String conStr="Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=NWIND_RW.MDB";OleDbConnection aConn = new OleDbConnection(conStr);aConn.Open();// Execute Queries using OleDbDataSetCommand ClassaConn.Close();
OleDbDataAdapter 1/2
• Es un “Puente” entre el DataSet y el origen de datos Hereda de la clase DataAdapter
• Es el mecanismo para actualizar un DataSet hacia su origen
Basede
DatosDataSetDataAdapter
OleDbDataAdapter 2/2
• Propiedades de Interés: Objetos OleDbCommand que contienen los
procedimientos (o sentencias SQL), para las distintas acciones DeleteCommand: InsertCommand: SelectCommand: UpdateCommand:
TableMappings: Definen las relaciones de los DataTable obtenidos por los comandos OleDb de Select
• Hereda métodos de la clase DbDataAdapter public virtual int Fill( DataSet dataSet ); public virtual int Update( DataSet dataSet );
OleDbCommand • Representa una consulta a ejecutar en la
base de datos• Propiedades:
Connection: Conexión utilizada (Objeto OleDbConnection)
CommandText: Sentencia a ejecutar CommandType: Tipo de sentencia asignada
Texto, Procedimiento Almacenado, o Nombre de la tabla
CommandTimeout: Cantidad de segundos para que se considere “fuera de tiempo” la ejecución de una sentencia
OleDbDataReader 1/2
• Permite acceso secuencial, de sólo lectura• Modelo de programación más “liviano”
Con menor sobrecarga que el OleDbDataAdapter
• Se obtiene por el método ExecuteReader de un OleDbCommand
• Depende del OleDbCommand hasta finalizar la lecturaMantiene la conexión abierta
OleDbDataReader 2/2
• Propiedades Importantes:FieldCount: Cantidad de Columnas del
conjunto de datosIsClosed: Indica el estado del Conjunto
de datosRecordsAffected: La cuenta de
registros obtenidos• Métodos para obtener Datos:
Por tipo de dato e índice de la columna: GetString, GetInt32, etc.
Read: Desplaza al siguiente registro
Resumen• ADO.NET es la evolución de ADO• Es desconectado, para acompañar el
modelo basado en Web• Muy flexible para trabajar con Datos• Aumenta las capacidades de
organizar lógicamente los datos• Amplio soporte para XML
Lo que permite mayores habilidades para trabajar y compartir datos
• Interactúa con una gran variedad de orígenes