Вы находитесь на странице: 1из 26

ADO.

NET
(modo desconectado)
Parte I
UAI – Facultad de Tecnología Informática
Ingeniería en sistemas informáticos
Lenguajes de Ultima Generación
2007
Temario
Introducción al modo desconectado
El objeto Dataset
El objeto DataTable
El objeto DataRow
El objeto DataColumn
El objeto DataRelation
El objeto DataView
Armado y llenado de un DataSet
Prerrequisitos
Se asume que Ud tiene:
 Conocimientos básicos de bases de datos
 Concepto de bases de datos relacionales

 Conocimiento mínimo de la sintaxis SQL de

comandos de bases de datos


 Concepto de ADO.NET

 Conocimiento de cómo gestionar una

conexión con ADO.NET


Introducción a ADO.NET
(modo desconectado)
Concepto

ADO.NET posee dos modos de


obtener, procesar y guardar
información en una Base de datos.
Modo conectado y desconectado.
Esta presentación explica su
funcionamiento en modo
desconectado.
Introducción a ADO.NET
(modo desconectado)
Esquema general del modo conectado

Proveedor de datos
Connection
Aplicación
consumidora Base de datos
de datos Command
(Aplicación DataReader
Windows, DataAdapter
aplicación
Web, etc)

Dataset

ADO.NET Repositorios de datos


Introducción a ADO.NET
(modo desconectado)
Esquema general del modo desconectado

Proveedor de datos
Connection
Aplicación
consumidora Base de datos
de datos Command
(Aplicación DataReader
Windows, DataAdapter
aplicación
Web, etc)

Dataset

ADO.NET Repositorios de datos


Introducción a ADO.NET
(modo desconectado)
Ventajas
Es más escalable porque consume más
recursos del cliente que del servidor
(agregar más clientes no impacta
significativamente en el mismo)

No produce bloqueos a nivel base de


datos (excepto durante los instantes en
que se recupera o persiste información)
Introducción a ADO.NET
(modo desconectado)
Desventajas
Consume algunos recursos más a nivel
memoria (debe retener varios aspectos
relacionales y de estado en memoria)

No es apropiado para entornos sin


estado (por ejemplo ASP.NET)
Objeto DataSet

El objeto DataSet permite mantener en


memoria una porción de los datos de la
base de datos para leerlos, modificarlos y
organizarlos.

Luego de los cambios, éstos pueden


persistirse en la base de datos
Objeto DataSet
Para mantener los datos en memoria el
DataSet replica un esquema similar al de
la base de datos, con un conjunto de
tablas (DataTable) interrelacionadas entre
sí (DataRelation), y todas ellas con
columnas (DataColumn) y filas (DataRow)
Objeto DataSet
El objeto DataSet no es dependiente
del proveedor de datos, por cuanto se
encuentra dentro del espacio de nombres
System.Data (que de manera
predeterminada se encuentra importado
en todos los proyectos).
Ya sea que se utilice un objeto
SqlConnection, OdbcConnection,
OracleConnection o cualquier otra
variante, el DataSet será el mismo.
Objeto DataSet
Principales atributos:
 DataSetName (indica el nombre de la
instancia)
 Tables (devuelve la colección de objetos

DataTable)
 Relations (devuelve la colección de objetos

DataRelation)
 DefaultViewManager (devuelve un objeto

DataViewManager que permite filtrar una


vista de los datos)

(Ver cuadro página 810)


Objeto DataSet
Principales métodos:
 AcceptChanges (Acepta los cambios en memoria)
 RejectChanges (Descarta los cambios pendientes)

 Merge (combina el Dataset con otro, un DataTable

o una matriz de DataRows)


 Reset (restablece el DataSet)

 Clone (duplica el esquema en un nuevo DataSet)

 Copy (duplica el esquema y los datos en un nuevo

DataSet)
 GetChanges (Obtiene un DataSet con las filas con

cambios pendientes)
Objeto DataTable
El objeto DataTable generalmente
forma parte de un DataTableCollection en
un DataSet, aunque ahora (ADO.NET
2.0) puede instanciarse fuera de él.

Representa una tabla en una base de


datos. Posee filas (DataRow), columnas
(DataColumn), índices y claves
(Constraints) y relaciones (DataRelation).

NOTA: Hay diferencias con Balena 2003


Objeto DataTable
Principales atributos:
 TableName (indica el nombre de la tabla)
 DataSet (devuelve el DataSet al que pertenece)

 Rows y Columns (devuelve la colección de objetos


DataRow o DataColumn)
 ChildRelations y ParentRelations (devuelve una
colección de DataRelation de las cuales posee la
ForeignKey o la clave de origen)
 Constraints: Devuelve la colección de Constraint.

 PrimaryKey: Devuelve un array de DataColumn


que representa la clave primaria (simple o
compuesta)
 DefaultView: Devuelve el objeto DataView.

(Ver cuadro página 813)


Objeto DataTable
Principales métodos:
 AcceptChanges, RejectChanges, Reset,
Clone, Copy, Clear, GetChanges: Igual
función que en el objeto DataSet
 NewRow: devuelve una nueva fila

(DataRow) para este DataTable


 ImportRow: Importa un DataRow

manteniendo sus datos, cambios, estado y


errores.
 Select: Devuelve una matriz de DataRow

resultante de una expresión de filtrado


Objeto DataTable
Principales eventos:
 ColumnChanging, RowChanging, RowDeleting: Se
lanzan cuando una columna o una fila están siendo
cambiadas y cuando una fila está siendo borrada.

ColumnChanged, RowChanged, RowDeleted:


Similar al evento anterior pero se lanza cuando la
acción de cambio o borrado ha finalizado.
Objeto DataRow
El objeto DataRow representa una fila en un
DataTable.

La clase DataRow no posee constructor


público (solo posee constructor Protected), por
lo cual no puede ser instanciada directamente.
La forma de crear una instancia DataRow para
un DataTable es a través del método NewRow
de esta última.

Dim mDr as DataRow = mDataTable.NewRow()


Objeto DataRow
Principales atributos:
 Item: Permite acceder a la colección de
DataColums
 RowState: Indica el estado de la fila (Unchanged,
Modified, Added, Deleted, o Detached)
Principales métodos:
 AcceptChanges, RejectChanges: Acepta o
descarta los cambios del DataRow
 Delete: Elimina la fila

 GetChildRows: Devuelve las filas hijas (en una


DataRelation)
 GetParentRow, GetParentRows: Devuelve la/las
fila/s padre según una DataRelation establecida

(ver tabla página 815)


Objeto DataColumn

El objeto DataColumn representa una


columna en un DataTable (o en una
DataRow).
Objeto DataColumn
Principales atributos:
 ColumnName: Nombre de la columna
 DataType: Tipo de valor que alojará.

 AllowDBNull: Indica se aceptará valores nulos

 Unique: Indica si la columna permitirá valores duplicados

 DefaultValue: Valor por defecto si no se indica

 Expression: Expresión utilizada para columnas calculadas

 AutoIncrement, AutoIncrementSeed, AutoIncrementStep:

Valores para determinar si la columna (si fuese numérica) será


autonumérica y la forma en que comportará el incremento.
 Table: Tabla a la que pertenece el DataColumn (solo lectura)

 Ordinal: Número de orden de la columna en la colección

DataColumCollection. (solo lectura)

(ver tabla página 817)


Objeto DataView
El objeto DataView representa una vista de
un DataTable.
Suele ser el resultado de una consulta, filtro o
reordenamiento de los datos
En un DataView de puede insertar, eliminar y
actualizar información tal como en un
DataTable
Una DataView contiene una colección de
objetos DataRowView

(Ver tabla de miembros en página 818)


Ejemplos: Armando un DataSet
Dim mDs As New DataSet(“MiDataSet”)
Dim mDt As New DataTable("Persona")

Dim mDc As New DataColumn("Persona_Id", GetType(System.Int32))

mDt.Columns.Add(mDc)
mDt.Columns.Add("Persona_Nombre", GetType(System.String))
mDt.Columns.Add("Persona_Apellido", GetType(System.String))
mDt.Columns.Add("Persona_Pais_Id", GetType(System.Int32))

mDs.Tables.Add(mDt)
Ejemplos: Armando un DataSet
mDs.Tables.Add("Pais")

mDs.Tables("Pais").Columns.Add("Pais_Id", GetType(System.Int32))
mDs.Tables("Pais").Columns.Add("Pais_Nombre", GetType(System.String))

mDs.Tables("Pais").PrimaryKey = New DataColumn()


{mDs.Tables(1).Columns("Pais_Id")}

mDs.Relations.Add("Persona_Pais_Id_Pais_Id",
mDs.Tables(1).Columns("Pais_Id"),
mDs.Tables(0).Columns("Persona_Pais_Id"))
Ejemplos: Llenando un DataSet
With mDs.Tables("Pais").Rows
.Add(1, "Argentina")
.Add(2, "Chile")
.Add(3, "Brasil")
End With

With mDs.Tables("Persona").Rows
.Add(1, "Jose", "San Martín", "Libertador 1212", 1, 3150)
.Add(2, "Bernardino", "Rivadavia", "Rivadavia 2150", 1, 900)
.Add(3, "Bernardo", "O Higgins", "O Higgins 710", 2, 2000)
End With

mDs.AcceptChanges()
FIN

¿Preguntas?

Вам также может понравиться