You are on page 1of 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
System.Data
DataSet

2/2

Contiene las clases principales de ADO.N


Persistencia en memoria de los datos

DataTable

Persistencia en memoria de la tabla de la base de

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 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)
DataColumn

Relations

Constraint(s)

DataRelation
DataRelation

DataTable
DataTable

DataView

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
SqlCommand
SqlConnection
SqlDataReader
SqlDataSetCommand

.OleDb
OleDbCommand
OleDbConnection
OleDbDataReader
OleDbDataSetCommand

Dependen de
System.Data.InternalDataCollection
Base 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
Datos

DataAdapter

DataSet

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

You might also like