ADO.NET
Daniel A. Seara
Director Regional MSDN
Buenos 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.NET
Microsoft® .NET Framework
Web Services
Interfaz de usuario
Datos y XML
ADO.NET
XML
...
Clases base
Motor de ejecución común (CLR)
...
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”
 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 JOIN
 Se 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.NET
 Objetos DataSet
 Proveedores administrados
• Namespaces relacionados con
ADO.NET
 System.Data
 System.Data.OleDb
 System.Data.Internal
 System.Data.Sql
 System.Data.SqlTypes
Namespaces relacionados con
ADO.NET
ADO.NET
System.Data
.SQLTypes
.Sql
.Internal
.OleDb
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
DataSet
Contiene las clases “principales” de ADO.NET
Persistencia en memoria de los datos
DataTable
Persistencia en memoria de la tabla de la base de datos
DataRow
Permite manipular una fila en un DataTable
DataColumn
Permite definir columnas en un DataTable
DataRelation
Puede relacionar 2 DataTables entre sí
DataSetView
Presenta una vista del DataSet
System.Data y DataSet
DataSet
Tables
DataTable
DataRow(s)
Relations
DataRelation
DataRelation
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í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 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
 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
• 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”);
//...
DataSet, DataRelation, Data…Views
DataSet
Tables
DataTable
DataRow(s)
DataColumn
Relations
Constraint(s)
DataRelation
DataRelation
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 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
.Sql
SqlCommand
SqlConnection
SqlDataReader
SqlDataSetCommand
.OleDb
OleDbCommand
OleDbConnection
OleDbDataReader
OleDbDataSetCommand
• Dependen de
System.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 Class
aConn.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
Base
de
Datos
DataAdapter
DataSet
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 lectura
 Mantiene la conexión abierta
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
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
Descargar

ADO.NET