32
ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Embed Size (px)

Citation preview

Page 1: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

ADO.NET

Daniel A. SearaDirector Regional MSDNBuenos Aires – ARGENTINA

NDSoft

Page 2: 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

Page 3: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

ADO.NET y el Marco.NETMicrosoft® .NET Framework

Motor de ejecución común (CLR)

Clases base

Web Services Interfaz de usuario

Datos y XML

ADO.NET XML ... ...

Page 4: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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 datosObtener datos de más de una tabla u origen, requiere

un JOIN en la baseLos 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)

Page 5: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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 JOINSe 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”

Page 6: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 7: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

Conceptos centrales y arquitectura

• El modelo de Objetos de ADO.NETObjetos DataSetProveedores administrados

• Namespaces relacionados con ADO.NETSystem.Data System.Data.OleDbSystem.Data.InternalSystem.Data.SqlSystem.Data.SqlTypes

Page 8: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

ADO.NET

Namespaces relacionados con ADO.NET

System.Data

.OleDb.Sql.SQLTypes .Internal

Page 9: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

El modelo de objetos de ADO.NET

• DataSet• Proveedores administrados

Page 10: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 11: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

System.Data 2/2

System.Data

DataTable

DataRow

DataRelation

DataColumn

DataSetView

DataSet

Contiene las clases “principales” de ADO.NET

Persistencia en memoria de los datos

Persistencia en memoria de la tabla de la base de datos

Permite manipular una fila en un DataTable

Permite definir columnas en un DataTable

Puede relacionar 2 DataTables entre sí

Presenta una vista del DataSet

Page 12: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

DataSet Tables

DataTable

System.Data y DataSet

Relations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

Page 13: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 14: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 15: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

System.Data - DataSet 3/3

Contenedor Universal de datos

DataSet: No sólo para bases de datos

Page 16: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 17: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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ícitamenteDataColumn 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 DataSetds.Tables.Add( dt );

Page 18: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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 mismoNo 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

Page 19: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 20: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 21: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 22: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

System.Data - DataView

DataView vista1 = new DataView( miTabla );DataView vista2 = new DataView( miTabla );

// La vista ordenada por Apellidovista1.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”);

//...

• Creando objetos DataView

Page 23: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

DataSet Tables

DataTable

DataSet, DataRelation, Data…Views

Relations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

Page 24: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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 MSDEOtros proveedores OLEDB

Por ejemplo: OracleEstablece la conexión entre los DataSets y

el repositorio de los datos• Dos proveedores base:

OLEDB: Namespace System.Data.OleDbSQL Server: Namespace System.Data.Sql

Page 25: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

Proveedores administrados

System.Data

.OleDb.Sql

OleDbCommandOleDbConnectionOleDbDataReaderOleDbDataSetCommand

SqlCommandSqlConnectionSqlDataReader

SqlDataSetCommand

• Dependen deSystem.Data.InternalDataCollectionBase para varias clases heredadas

Page 26: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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 ClassaConn.Close();

Page 27: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Basede

DatosDataSetDataAdapter

Page 28: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 29: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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

Page 30: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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 lecturaMantiene la conexión abierta

Page 31: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

OleDbDataReader 2/2

• Propiedades Importantes:FieldCount: Cantidad de Columnas del

conjunto de datosIsClosed: Indica el estado del Conjunto

de datosRecordsAffected: 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

Page 32: ADO.NET Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

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