Este documento presenta conceptos clave de ADO.NET como el DataSet, DataTable, DataRelation y DataView. Explica que ADO.NET permite el acceso desconectado a datos y el uso de XML. También cubre proveedores como SqlConnection y OleDbConnection para interactuar con bases de datos, y clases como SqlCommand y OleDbDataAdapter para consultas.
6. ADO.NET y el Marco.NET
Microsoft® .NET Framework
Motor de ejecución común (CLR)
Clases base
Web Services Interfaz de usuario
Datos y XML
ADO.NET XML ... ...
7. 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 datos
■ Obtener datos de más de una tabla u origen, requiere un JOIN en la
base
■ Los 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”
8. 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 JOIN
■ Se preservan las relaciones: La navegación es relacional
○ Los tipos de datos sólo están vinculados al esquema de XML
9. 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
10. Conceptos centrales y arquitectura
● El modelo de Objetos de ADO.NET
○ Objetos DataSet
○ Proveedores administrados
● Namespaces relacionados con ADO.NET
○ System.Data
○ System.Data.OleDb
○ System.Data.Internal
○ System.Data.Sql
12. El modelo de objetos de ADO.NET
● DataSet
● Proveedores administrados
13. 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,
16. 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
17. 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
18. System.Data - DataSet 3/3
Contenedor Universal de datos
DataSet: No sólo para bases
de datos
19. 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
20. 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 );
21. 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 mismo
■ No 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
22. 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 );
23. 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
24. 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
25. System.Data - DataView
● Creando objetos 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”);
//...
27. 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
28. Proveedores administrados
● Dependen de
System.Data.InternalDataCollectionBase para varias
clases heredadas
System.Data
.OleDb
.Sql
OleDbCommand
OleDbConnection
OleDbDataReader
OleDbDataSetCommand
SqlCommand
SqlConnection
SqlDataReader
SqlDataSetCommand
29. 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 Class
aConn.Close();
30. 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
Base
de
Datos
DataSet
DataAdapter
31. 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
32. 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
33. 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 lectura
○ Mantiene la conexión abierta
34. OleDbDataReader 2/2
● Propiedades Importantes:
○ FieldCount: Cantidad de Columnas del conjunto de datos
○ IsClosed: Indica el estado del Conjunto de datos
○ RecordsAffected: 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
35. 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