Vous êtes sur la page 1sur 32

ADO.

NET
Daniel A. Seara
Director Regional MSDN
Buenos Aires ARGENTINA
NDSoft
Objetivos

Introducir Microsoft ADO.NET


Mostrar la evolucin 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 ejecucin comn (CLR)


ADO vs. ADO.NET 1/2
ADO
Diseado para acceso conectado
Vinculado al modelo fsico de los datos
El RecordSet es el contenedor central de datos
El RecordSet es una tabla que contiene todos los
datos
Obtener datos de ms de una tabla u origen, requiere un
JOIN en la base
Los datos son aplanados: pierden sus relaciones y la
navegacin 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 informacin a travs de
murallas de fuego (DCOM, datos binarios)
ADO vs. ADO.NET 2/2
ADO.NET
Diseado para acceso desconectado
Se puede modelar la informacin por lgica!
El DataSet reemplaza al RecordSet
El DataSet puede contener mltiples tablas
No se requieren JOIN
Se preservan las relaciones: La navegacin es relacional
Los tipos de datos slo estn 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
Estndar 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 perodos
largos
No se producen bloqueos en la base de datos
Trabaja como la Web Toco y me voy
Facilidad en el Mantenimiento
Separacin de la lgica 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 mtodos para manipular los datos
Habilidad para crear vistas de los datos
Formas para representar lgicamente los datos
Permite la utilizacin de XML para ver, compartir y
almacenar datos
System.Data 2/2
System.Data Contiene las clases principales de ADO.NET
DataSet 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 DataColumn
DataView
DataRelation Constraint(s)

DataRelation
DataTable

DataTable
System.Data - DataSet 1/3
Un repositorio en memoria de datos desde un
origen
Forma comn de representar y manipular datos
Contendor universal
No slo para base de datos
Representacin lgica o fsica de los datos;
depende de:
La consulta / Conjunto de resultados
Donde existen DataTables y Relations
Diseado 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 coleccin de objetos DataTable
Relations:
Devuelve la coleccin de DataRelations
Relacionadas con XML
System.Data - DataSet 3/3

Contenedor Universal de datos


DataSet: No slo para bases
de datos
System.Data - DataTable
Puede ser vinculado a una tabla fsica de una base
Y relacionarla con otras a travs de DataRelations
Bloqueo concurrente optimista
Propiedades importantes:
Columns: Devuelve la coleccin 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.DataDataSet 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. Explcitamente
DataColumn dc = new DataColumn( ID, Int16 );
dt.Columns.Add( dc );

// 2. Implcitamente.
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 lgicas
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 navegacin por relaciones
RelationsCollection contiene todas las
DataRelations
Se accede a travs 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 relacin 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 relacin 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
Mtodo 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 mltiples 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 expresin 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 slo los modificados


vista2.RowStateFilter= DataViewRowState.ModifiedOriginal;

// Vincular a un control de usuario...


DataGrid myGrid = new DataGrid();
myGrid.SetDataBinding( view1, Clientes);

//...
DataSet, DataRelation, DataViews
DataSet Tables
DataTable
DataRow(s)
DataView
DataColumn
Relations
Constraint(s)
DataRelation
DataRelation DataTable

DataTable
ADO.NET y Proveedores Administrados
Una coleccin de clases que permiten
acceder a los orgenes de datos:
Microsoft SQL Server 2000, SQL Server 7,
y MSDE
Otros proveedores OLEDB
Por ejemplo: Oracle
Establece la conexin 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 .OleDb
SqlCommand OleDbCommand
SqlConnection OleDbConnection
SqlDataReader OleDbDataReader
SqlDataSetCommand OleDbDataSetCommand

Dependen de
System.Data.InternalDataCollectionBase
para varias clases heredadas
OleDbConnection y
SqlConnection
Representa una nica sesin con un origen
de datos
Exponen funcionalidad de transacciones
Ejemplo de Conexin 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 DataAdapter DataSet
Datos
OleDbDataAdapter 2/2
Propiedades de Inters:
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 mtodos 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: Conexin 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 ejecucin de una
sentencia
OleDbDataReader 1/2
Permite acceso secuencial, de slo lectura
Modelo de programacin ms liviano
Con menor sobrecarga que el
OleDbDataAdapter
Se obtiene por el mtodo ExecuteReader
de un OleDbCommand
Depende del OleDbCommand hasta
finalizar la lectura
Mantiene la conexin 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
Mtodos 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 evolucin de ADO
Es desconectado, para acompaar el
modelo basado en Web
Muy flexible para trabajar con Datos
Aumenta las capacidades de organizar
lgicamente los datos
Amplio soporte para XML
Lo que permite mayores habilidades para
trabajar y compartir datos
Interacta con una gran variedad de
orgenes