50
Helkyn Coello Helkyn Coello Costa Costa Ing. Informático Ing. Informático MCSD / MCT / MCDBA MCSD / MCT / MCDBA

visual basic .net

Embed Size (px)

Citation preview

Page 1: visual basic .net

Helkyn Coello CostaHelkyn Coello CostaIng. InformáticoIng. InformáticoMCSD / MCT / MCDBAMCSD / MCT / MCDBA

Page 2: visual basic .net

01.01.22

Capítulo 3:Capítulo 3:

Introducción a ADO.NETIntroducción a ADO.NET

Page 3: visual basic .net

01.01.33

Módulo 1: Módulo 1: Evolución del Acceso a DatosEvolución del Acceso a Datos

EvoluciónEvolución Qué es ADO.NETQué es ADO.NET Características de ADO.NETCaracterísticas de ADO.NET De ADO a ADO.NETDe ADO a ADO.NET Arquitectura de ADO.NETArquitectura de ADO.NET Modelo de objetos de ADO.NETModelo de objetos de ADO.NET ProveedoresProveedores Data desconectada VS data conectadaData desconectada VS data conectada

Page 4: visual basic .net

01.01.44

Evolución del Acceso a DatosEvolución del Acceso a DatosEvoluciónEvolución

1-Tier(monolithic)

Client logicBusiness logicData storage

3-Tier

“Thin” Client

N-Tier

2-Tier

“Fat” Client

Internet

XML Web

service

XML Web

service

Page 5: visual basic .net

01.01.55

Evolución del Acceso a DatosEvolución del Acceso a DatosQué es ADO.NETQué es ADO.NET Una gran gran mejora de ADOUna gran gran mejora de ADO Diseñado para data conectada y desconectadaDiseñado para data conectada y desconectada

Ventajas para integrar distintos tipos de dataVentajas para integrar distintos tipos de data XML de salida y entradaXML de salida y entrada

Diseño de alto rendimientoDiseño de alto rendimiento Objetos y proveedores optimizadosObjetos y proveedores optimizados

Visual Studio.NET diseñado para trabajar con Visual Studio.NET diseñado para trabajar con ADO .NETADO .NET Integración con objetos y múltiples asistentesIntegración con objetos y múltiples asistentes

Fuertemente integrado con el .NET FrameworkFuertemente integrado con el .NET Framework Manejo de Excepciones, nombres, notificaciones, etc.Manejo de Excepciones, nombres, notificaciones, etc.

Page 6: visual basic .net

01.01.66

Evolución del Acceso a DatosEvolución del Acceso a DatosQué es ADO.NETQué es ADO.NET

ADO.NET soporta los sgtes tipos de data storage: ADO.NET soporta los sgtes tipos de data storage: No estructuradoNo estructuradoEstructurado, data no-jerarquicaEstructurado, data no-jerarquica

Archivos (CSV), hojas de calculo, archivos Archivos (CSV), hojas de calculo, archivos de Microsoft Exchange, Active Directory yde Microsoft Exchange, Active Directory yotrosotros

JerarquicaJerarquica Documentos XML y otrosDocumentos XML y otros

Base de datos RelacionalBase de datos RelacionalSQL Server, Oracle, Access, y otrosSQL Server, Oracle, Access, y otros

Page 7: visual basic .net

01.01.77

Evolución del Acceso a DatosEvolución del Acceso a DatosQué es ADO.NETQué es ADO.NET

Los namespaces relacionado con data son:Los namespaces relacionado con data son:

System.DataSystem.Data System.Data.CommonSystem.Data.Common System.Data.SqlClientSystem.Data.SqlClient System.Data.OleDbSystem.Data.OleDb System.Data.SqlTypesSystem.Data.SqlTypes System.XmlSystem.Xml

Page 8: visual basic .net

01.01.88

Evolución del Acceso a DatosEvolución del Acceso a DatosCaracterísticas de ADO.NETCaracterísticas de ADO.NET Data classesData classes

Contenedores de datos; no saben nada de extraer Contenedores de datos; no saben nada de extraer informacion de la base de datosinformacion de la base de datos

Objecto clave: DataSet = Cache desconectado y en Objecto clave: DataSet = Cache desconectado y en memoriamemoria

Database classesDatabase classes Usaod para leer y escribir data de fuente de datosUsaod para leer y escribir data de fuente de datos Proveedores manejados: SQL ServerProveedores manejados: SQL Server™™ y OLEDB y OLEDB Objetos clave:Objetos clave:

Connection = Se conecta a la fuente de datosConnection = Se conecta a la fuente de datos Command = Ejecuta stored proceduresCommand = Ejecuta stored procedures DataAdapter = Conecta DataSet a la base de datosDataAdapter = Conecta DataSet a la base de datos DataReader=Cursor Forwardonly,readonly (fire hose)DataReader=Cursor Forwardonly,readonly (fire hose)

Page 9: visual basic .net

01.01.99

Evolución del Acceso a DatosEvolución del Acceso a DatosCaracterísticas de ADO.NETCaracterísticas de ADO.NET

Filosofia de diseñoFilosofia de diseño DataReaderDataReader

RecordSets Forward-only y read-onlyRecordSets Forward-only y read-only DataSetDataSet

Cache Desconectado y en memoriaCache Desconectado y en memoria DataAdapterDataAdapter

Conecta un DataSet con una fuente de Conecta un DataSet con una fuente de datosdatos

Page 10: visual basic .net

01.01.1010

Evolución del Acceso a DatosEvolución del Acceso a DatosDe ADO a ADO.NETDe ADO a ADO.NET

ADO evoluciona en ADO.NETADO evoluciona en ADO.NET

RecordSetRecordSet DataReaderDataReader

DataAdapterDataAdapter

DataSetDataSet

CommandCommand CommandCommand

ConnectionConnectionConnectionConnection

Page 11: visual basic .net

01.01.1111

Evolución del Acceso a DatosEvolución del Acceso a DatosArquitectura de ADO.NETArquitectura de ADO.NET

Business TierBusiness Tier Data TierData Tier

Presentation TierPresentation TierWindows Forms

Web Forms

Business to Business

Data Object (Class)

DataSet

DataSetDataSet

InternetInternetIntranetIntranet

Data AdapterData Adapter

Data AdapterData Adapter

(BizTalk, for example)

XML

MyApp.Exe

IE

Page 12: visual basic .net

01.01.1212

Evolución del Acceso a DatosEvolución del Acceso a DatosArquitectura de ADO.NETArquitectura de ADO.NET

ADO.NET esta fuertemente integrado con XMLADO.NET esta fuertemente integrado con XML Usando XML en una aplicacion ADO.NET

desconectada

XML Web Services

DataSetDataSet

Request data1111

SQL Query2222

Resultado3333XML4444

Updated XML5555SQL updates

6666

Fuente de DatosCliente

DataSetDataSet

Page 13: visual basic .net

01.01.1313

Evolución del Acceso a DatosEvolución del Acceso a DatosModelo de Objetos de ADO.NETModelo de Objetos de ADO.NET

DataSet

SQL Server .NET Data Provider

SQL Server .NET Data Provider

OLE DB .NET Data ProviderOLE DB .NET Data Provider

SQL Server 7.0(and later)

OLEDB sources(SQL Server 6.5)

Page 14: visual basic .net

01.01.1414

Evolución del Acceso a DatosEvolución del Acceso a DatosProveedores AdministradosProveedores Administrados

Manejan la interaccion con la fuente de Manejan la interaccion con la fuente de datosdatos Equivalente a la capa OLEDBEquivalente a la capa OLEDB Expone directamente interfaces consuidorasExpone directamente interfaces consuidoras Especifico y optimizado para fuentes de datosEspecifico y optimizado para fuentes de datos Dos proveedores estandares:Dos proveedores estandares:

System.Data.OLEDB – Cualquier DataSourceSystem.Data.OLEDB – Cualquier DataSource System.Data.SQLClient – Para SQL ServerSystem.Data.SQLClient – Para SQL Server

Page 15: visual basic .net

01.01.1515

Evolución del Acceso a DatosEvolución del Acceso a DatosData Conectada VS Data DesconectadaData Conectada VS Data Desconectada

Una ambiente conectado es uno en el cual los Una ambiente conectado es uno en el cual los usuarios constantemente se conectan a la base usuarios constantemente se conectan a la base de datosde datos

Ventajas:Ventajas: El ambiente es mas facil de asegurarEl ambiente es mas facil de asegurar La concurrencia is mas facilmente controladaLa concurrencia is mas facilmente controlada La data suele ser mas actual que en otros La data suele ser mas actual que en otros

escenariosescenariosDesventajas:Desventajas:

Se debe tener una conexion de red permanenteSe debe tener una conexion de red permanente EscalabilidadEscalabilidad

Page 16: visual basic .net

01.01.1616

Evolución del Acceso a DatosEvolución del Acceso a DatosData Conectada VS Data DesconectadaData Conectada VS Data Desconectada

Acceso a Datos ConectadoAcceso a Datos Conectado Transacciones son requiridasTransacciones son requiridas No hay interaccion del usuario con la dataNo hay interaccion del usuario con la data Procesamiento de grandes cantidades de dataProcesamiento de grandes cantidades de data

Acceso a Datos desconectadoAcceso a Datos desconectado Usa DataSet cuando:Usa DataSet cuando:

La interaccion del usuario es requeridaLa interaccion del usuario es requerida Si data en memoria es requeridaSi data en memoria es requerida Aplicaciones distribuidas Aplicaciones distribuidas

Cuando usar cualCuando usar cual::

Page 17: visual basic .net

01.01.1717

Evolución del Acceso a DatosEvolución del Acceso a DatosData Conectada VS Data DesconectadaData Conectada VS Data Desconectada

SQL Server 7.0(and later)

En un escenario En un escenario conectado, los conectado, los recursos son recursos son puestos en el puestos en el servidor hasta que servidor hasta que la conexión se la conexión se cierrecierre

1.1. Abrir conexionAbrir conexion

2.2. Ejeuctar comandoEjeuctar comando

3.3. Procesar las filas en Procesar las filas en un readerun reader

4.4. Cerrar el readerCerrar el reader

5.5. Cerrar la conexionCerrar la conexion

SqlConnectionSqlConnection

SqlCommandSqlCommand

SqlDataReaderSqlDataReader

Page 18: visual basic .net

01.01.1818

Evolución del Acceso a DatosEvolución del Acceso a DatosData Conectada VS Data DesconectadaData Conectada VS Data Desconectada En un ambiente desconectado, un subconjunto de En un ambiente desconectado, un subconjunto de

dat del data store puede ser copiado y actualizado dat del data store puede ser copiado y actualizado independientemente y los cambios devueltos al data independientemente y los cambios devueltos al data storestore

VentajasVentajas Se trabaja en cualquier momento, y se puede conectar Se trabaja en cualquier momento, y se puede conectar

con la fuente de datos en cualquier momento para con la fuente de datos en cualquier momento para procesar la peticiónprocesar la petición

Otros usuarios pueden usar la conexionOtros usuarios pueden usar la conexion Incrementa la escalabilidad y rendimientoIncrementa la escalabilidad y rendimiento

DesventajasDesventajas La data no esta siempre actualizadaLa data no esta siempre actualizada Conflictos de actualizaciòn pueden ocurrir que deben Conflictos de actualizaciòn pueden ocurrir que deben

ser resueltosser resueltos

Page 19: visual basic .net

01.01.1919

Evolución del Acceso a DatosEvolución del Acceso a DatosData Conectada VS Data DesconectadaData Conectada VS Data Desconectada

En un escenario En un escenario desconectado, los desconectado, los recursos son mantenidos recursos son mantenidos en el servidor mientras se en el servidor mientras se procesa la dataprocesa la data

1.1. Abrir la conexionAbrir la conexion

2.2. Llenar el DataSetLlenar el DataSet

3.3. Cerrar la conexionCerrar la conexion

4.4. Procesar el DataSetProcesar el DataSet

5.5. Abrir la conexionAbrir la conexion

6.6. Actualizar el data sourceActualizar el data source

7.7. Cerrar la conexionCerrar la conexion

SqlConnectionSqlConnection

SqlDataAdapterSqlDataAdapter

DataSetDataSet

SQL Server 7.0(and later)

Page 20: visual basic .net

01.01.2020

Módulo 2: Módulo 2: Objetos de ADO.NETObjetos de ADO.NET

El Objeto ConnectionEl Objeto Connection El Objeto El Objeto CommandCommand El Objeto El Objeto DataReaderDataReader

Page 21: visual basic .net

01.01.2121

Objetos de ADO.NETObjetos de ADO.NETEl Objeto ConnectionEl Objeto Connection

Representa una conexion con la fuente de Representa una conexion con la fuente de datosdatos

Sobre una Conexion tu puedes…Sobre una Conexion tu puedes… Personalizar la conexión hacia una base de Personalizar la conexión hacia una base de

datosdatos Iniciar, confirmar, y abortar transaccionesIniciar, confirmar, y abortar transacciones

Equivalente al objeto ADODB.ConnectionEquivalente al objeto ADODB.Connection

Page 22: visual basic .net

01.01.2222

Objetos de ADO.NETObjetos de ADO.NETEl Objeto ConnectionEl Objeto Connection//Specify the System.Data.SQL Namespace//Specify the System.Data.SQL NamespaceUsing System.Data.SQL;Using System.Data.SQL;

// Create an instance of an SQLConnection // Create an instance of an SQLConnection objectobjectSQLConnection cnn = new SQLConnection();SQLConnection cnn = new SQLConnection();

// Set the connection string// Set the connection stringcnn.ConnectionString = cnn.ConnectionString = "server=localhost;uid=sa;database=pubs";"server=localhost;uid=sa;database=pubs";

//Open the Connection//Open the Connectioncnn.Open();cnn.Open();

Page 23: visual basic .net

01.01.2323

Objetos de ADO.NETObjetos de ADO.NETEl Objeto CommandEl Objeto Command Representa un comando a ser ejecutadoRepresenta un comando a ser ejecutado Con un command tu puedes:Con un command tu puedes:

Definir una sentencia a ser ejecutada en el servidorDefinir una sentencia a ser ejecutada en el servidor Establecer información de parametros del commandEstablecer información de parametros del command Devolver valores de la ejecución del commandDevolver valores de la ejecución del command

Corresponde al objeto ADODB.CommandCorresponde al objeto ADODB.Command Metodos:Metodos:

ExecuteReader - Ejecuta y retorna un DataReaderExecuteReader - Ejecuta y retorna un DataReader ExecuteNonQuery - Ejecuta y retorna nothingExecuteNonQuery - Ejecuta y retorna nothing ExecuteScalar - Ejecuta y retorna el 1er valorExecuteScalar - Ejecuta y retorna el 1er valor

Puede contener parametrosPuede contener parametros

Page 24: visual basic .net

01.01.2424

Objetos de ADO.NETObjetos de ADO.NETEl Objeto CommandEl Objeto Command

// Create Command// Create Command

SQLCommand cmd = new SQLCommand();SQLCommand cmd = new SQLCommand();

// Set command's active connection and command text// Set command's active connection and command text

cmd.ActiveConnection = cnn;cmd.ActiveConnection = cnn;

cmd.CommandText = "Select au_lname from authors cmd.CommandText = "Select au_lname from authors where state = @param1";where state = @param1";

// Create parameter and set value// Create parameter and set value

cmd.Parameters.Add( cmd.Parameters.Add(

new SQLParameter("@param1", new SQLParameter("@param1", typeof(String),2) );typeof(String),2) );

cmd.Parameters["@param1"].Value = "CA";cmd.Parameters["@param1"].Value = "CA";

Page 25: visual basic .net

01.01.2525

Objetos de ADO.NETObjetos de ADO.NETEl Objeto DataReaderEl Objeto DataReader

El DataReader provee un flujo forward-only y de solo El DataReader provee un flujo forward-only y de solo lectura sobre los datoslectura sobre los datos Representa los resultados de un comando ejecutadoRepresenta los resultados de un comando ejecutado

El DataReader habilita…El DataReader habilita… Obtener un flujo de resultados de la fuente de datosObtener un flujo de resultados de la fuente de datos

Equivalente al RecordSet FO/ROEquivalente al RecordSet FO/RO No soporta scrolling y actualizacionesNo soporta scrolling y actualizaciones Los campos son accesados con tipificacion fuerte Los campos son accesados con tipificacion fuerte

(strongly typed) en vez de usar FieldsCollection(strongly typed) en vez de usar FieldsCollection Rendimiento: myRow.GetInt(0)Rendimiento: myRow.GetInt(0) Acceso simple a nombres para compabilidad/facil Acceso simple a nombres para compabilidad/facil

uso: myRow["fieldname"]uso: myRow["fieldname"]

Page 26: visual basic .net

01.01.2626

Objetos de ADO.NETObjetos de ADO.NETEl Objeto DataReaderEl Objeto DataReader// Define DataReader// Define DataReaderIDataReader dr;IDataReader dr;

// Execute Command// Execute Commandcmd.Execute(out dr);cmd.Execute(out dr);

// Write out the results// Write out the resultswhile(dr.Read())while(dr.Read()){{

Console.WriteLine("Name = " + Console.WriteLine("Name = " + dr["au_lname"]);dr["au_lname"]);

}}

// Close the connection// Close the connectioncnn.Close();cnn.Close();

Page 27: visual basic .net

01.01.2727

Módulo 3: Módulo 3: Manejo de DataSetsManejo de DataSets

El Objeto DataSetEl Objeto DataSet Ciclo de Vida de un DataSetCiclo de Vida de un DataSet Arquitectura de un DataSetArquitectura de un DataSet Modelo de objetos del DataSetModelo de objetos del DataSet Ejemplo de DataSetEjemplo de DataSet El Objeto El Objeto DataApdaterDataApdater El Objeto El Objeto DataViewDataView DataSets fuertemente DefinidosDataSets fuertemente Definidos DatabindingDatabinding

Page 28: visual basic .net

01.01.2828

Manejo de DataSetsManejo de DataSetsEl Objeto DataSetEl Objeto DataSet El equivalente mas cercano El equivalente mas cercano

al Recordset de ADO, peroal Recordset de ADO, peromejormejor

Vistas relacionales de datosVistas relacionales de datos Contiene tables, columns, rows, Contiene tables, columns, rows,

constraints,views y relationsconstraints,views y relations Modelo desconectadoModelo desconectado

No sabe nada del data source No sabe nada del data source Indizacion tipo Array (Array-like)Indizacion tipo Array (Array-like) Tipificacion fuerte (Strong typing)Tipificacion fuerte (Strong typing) Soporte de Databinding y actualizaciones batchSoporte de Databinding y actualizaciones batch Se conecta a la fuente de datos via DataAdapterSe conecta a la fuente de datos via DataAdapter

DataSetDataSet

TablesTables

TableTable

ColumnsColumns

ColumnColumn

ConstraintsConstraints

ConstraintConstraint

RowsRows

RowRow

RelationsRelations

RelationRelation

Page 29: visual basic .net

01.01.2929

Manejo de DataSetsManejo de DataSetsEl Objeto DataSetEl Objeto DataSet Vista relacional de la dataVista relacional de la data

Tables, Columns, Rows, Constraints,RelationsTables, Columns, Rows, Constraints,Relations Crea metadata directamente e inserta dataCrea metadata directamente e inserta data Modelo de Cache Explicita Modelo de Cache Explicita

Objecto remoto, desconectadoObjecto remoto, desconectado No sabe nada del data sourceNo sabe nada del data source

Comportamiento comunComportamiento comun Caracteristicas de rendimiento predeciblesCaracteristicas de rendimiento predecibles

Indizacion tipo Array (Array-like )Indizacion tipo Array (Array-like ) Tipificacion fuerte (Strong Typing)Tipificacion fuerte (Strong Typing)

Page 30: visual basic .net

01.01.3030

Manejo de DataSetsManejo de DataSetsCiclo de Vida de un DataSetCiclo de Vida de un DataSet

OriginalDataStore

DataSet

Table1

Table2

Establece las Establece las relacionesrelaciones

DataSet

Table1

Table2

Hace los Hace los cambios a la datacambios a la data

DataSet

Table1

Table2

Resuelve los cambios Resuelve los cambios con el proveedor con el proveedor manejadomanejado

Extrae tablasExtrae tablasCon Proveedor Con Proveedor

ManejadoManejado

Page 31: visual basic .net

01.01.3131

Manejo de DataSetsManejo de DataSetsCiclo de Vida de un DataSetCiclo de Vida de un DataSet

DataSet

Table1

Table2

DataSet

Table1

Table2

DataSet

Table1

Table2

OriginalDataStore

Establece las relaciones

Hace los cambios a la data

Resuelve los cambios Resuelve los cambios con el proveedor con el proveedor manejadomanejado

Extrae tablasExtrae tablasCon proveedore Con proveedore

manejadomanejado

OperacionesOperacionesConectadasConectadas

Page 32: visual basic .net

01.01.3232

Manejo de DataSetsManejo de DataSetsCiclo de Vida de un DataSetCiclo de Vida de un DataSet

DataSet

Table1

Table2

DataSet

Table1

Table2

DataSet

Table1

Table2

OriginalDataStore

Establece las Establece las relacionesrelaciones

Hace los Hace los cambios a la datacambios a la data

Resuelve los cambios con el proveedor manejado

Extrae tablasCon proveedor

manejadoOperaciones Operaciones

DesconectadasDesconectadas

Page 33: visual basic .net

01.01.3333

Manejo de DataSets Manejo de DataSets Arquitectura del DataSetArquitectura del DataSet

Employees OrdersCustomersProductsCategories

Categories Products

SqlDataAdapter OleDbDataAdapter

SQL Server 2000

Customers Orders

SQL Server 6.5

DataSet

XML Web service

XML Web service

XmlDataDocumentXML File

XML File

Page 34: visual basic .net

01.01.3434

Manejo de DataSets Manejo de DataSets Modelo de objetos del DataSetModelo de objetos del DataSet

ServidorServidor Fuente de DatosFuente de Datos

DatabaseDatabase

ConnectionConnection Stored Stored ProcedureProcedure

DataSetDataSet

DataTableDataTable

DataTableDataTable

Page 35: visual basic .net

01.01.3535

Manejo de DataSets Manejo de DataSets Modelo de objetos del DataSetModelo de objetos del DataSet

Colecciones comunesColecciones comunes Tables (coleccion de objetos DataTable)Tables (coleccion de objetos DataTable) Relations (coleccion de objetos DataRelation)Relations (coleccion de objetos DataRelation)

Soporte de Data binding a controles web y Soporte de Data binding a controles web y windowswindows

El esquema (Schema) puede ser definido El esquema (Schema) puede ser definido programaticamente o usando XSDprogramaticamente o usando XSD

DataRow

DataColumn

DataTable

DataRelation Constraints

Page 36: visual basic .net

01.01.3636

Manejo de DataSets Manejo de DataSets Modelo de objetos del DataSetModelo de objetos del DataSet

Creando un DataSetCreando un DataSet Arrastra y suelta un control dataSet desde Arrastra y suelta un control dataSet desde

el ToolBoxel ToolBox Creando un DataTableCreando un DataTable

Edita la coleccionTables del DataSet Edita la coleccionTables del DataSet usando la Ventana de Propiedadesusando la Ventana de Propiedades

Creando un DataColumn y agregandolo al Creando un DataColumn y agregandolo al DataTableDataTable Edita la coleccion Columns del DataTable Edita la coleccion Columns del DataTable

usando la Ventana de Propiedadesusando la Ventana de Propiedades

Page 37: visual basic .net

01.01.3737

Manejo de DataSets Manejo de DataSets Ejemplo de DataSetEjemplo de DataSet// Create a "Pubs" DataSet// Create a "Pubs" DataSet

DataSet pubs = new DataSet("Pubs");DataSet pubs = new DataSet("Pubs");

//Create an "Inventory" Table//Create an "Inventory" Table

DataTable inventory = new DataTable("Inventory");DataTable inventory = new DataTable("Inventory");

inventory.Columns.Add("TitleID",typeof(Int32));inventory.Columns.Add("TitleID",typeof(Int32));

inventory.Columns.Add("Quantity",typeof(Int32));inventory.Columns.Add("Quantity",typeof(Int32));

// Add Inventory table to Pubs DataSet// Add Inventory table to Pubs DataSet

pubs.Tables.Add(inventory);pubs.Tables.Add(inventory);

// Add a record to the Inventory table// Add a record to the Inventory table

DataRow row = inventory.NewRow();DataRow row = inventory.NewRow();

row["TitleID"]=1;row["TitleID"]=1;

row["Quantity"]=25;row["Quantity"]=25;

inventory.Rows.Add(row);inventory.Rows.Add(row);

Page 38: visual basic .net

01.01.3838

Manejo de DataSetsManejo de DataSetsEl Objeto DataAdapterEl Objeto DataAdapter Sabe como cargar una tabla del Sabe como cargar una tabla del

DataStore y escribir los cambiosDataStore y escribir los cambios Expone 2 métodos:Expone 2 métodos:

Fill (DataSet y Table)Fill (DataSet y Table) Update (DataSet y Table)Update (DataSet y Table)

Provee mapeo entre tablas y Provee mapeo entre tablas y columnascolumnas

Los usuarios puede establecer Los usuarios puede establecer comandos insert/update/delete comandos insert/update/delete explicitosexplicitos Como: especificar SPsComo: especificar SPs

Permite que un DataSet sea poblado Permite que un DataSet sea poblado de multiples fuentes de datosde multiples fuentes de datos

SelectCommand

InsertCommand

DeleteCommand

ConnectionConnectionDataAdapterDataAdapter

ConnectionConnection

UpdateCommandUpdateCommand

SelectCommandSelectCommand

InsertCommandInsertCommand

DeleteCommandDeleteCommand

TableMappingsTableMappings

Page 39: visual basic .net

01.01.3939

Manejo de DataSets Manejo de DataSets El Objeto DataAdapterEl Objeto DataAdapter

Data sourceDataAdapterDataTable

DataTable

DataSet

DataAdapter

FillFill

UpdateUpdateFillFill

UpdateUpdate

Page 40: visual basic .net

01.01.4040

Manejo de DataSets Manejo de DataSets El Objeto DataAdapterEl Objeto DataAdapter

DataAdapterDataAdapter

SelectCommandSelectCommand

InsertCommandInsertCommand

UpdateCommandUpdateCommand

DeleteCommandDeleteCommand

TableMappingsTableMappings

DatabaseDatabase

DataSetDataSet

Page 41: visual basic .net

01.01.4141

Manejo de DataSets Manejo de DataSets El Objeto DataAdapterEl Objeto DataAdapter

sp_SELECT

XxxCommandXxxCommand

SelectCommand UpdateCommand InsertCommand DeleteCommand

XxxDataAdapter

XxxCommandXxxCommand XxxCommandXxxCommand XxxCommandXxxCommand

XxxConnectionXxxConnection

sp_UPDATE sp_INSERT sp_DELETE

XxxDataReaderXxxDataReader

Page 42: visual basic .net

01.01.4242

Manejo de DataSets Manejo de DataSets El Objeto DataAdapterEl Objeto DataAdapter

Propiedades del DataAdapterPropiedades del DataAdapter SelectCommandSelectCommand InsertCommandInsertCommand UpdateCommandUpdateCommand DeleteCommandDeleteCommand

Metodos usados por los DataAdaptersMetodos usados por los DataAdapters FillFill UpdateUpdate

Page 43: visual basic .net

01.01.4343

Manejo de DataSets Manejo de DataSets El Objeto DataAdapterEl Objeto DataAdapter Puedes crear un DataAdapter para ejecutar Puedes crear un DataAdapter para ejecutar

una nueva sentencia SELECTuna nueva sentencia SELECT Acceso a datos de solo lectura para Acceso a datos de solo lectura para

aplicaciones desconectadasaplicaciones desconectadas Dos formas de crear DataAdapterDos formas de crear DataAdapter

Usa el Data Adapter Configuration WizardUsa el Data Adapter Configuration Wizard Escribe código tu mismoEscribe código tu mismo

Debes especificarDebes especificar Una conexion nueva o existenteUna conexion nueva o existente La sentencia SELECT para la consultaLa sentencia SELECT para la consulta

Page 44: visual basic .net

01.01.4444

Manejo de DataSets Manejo de DataSets El Objeto DataSetEl Objeto DataSet// Create a "Pubs" DataSet// Create a "Pubs" DataSet

DataSet pubs = new DataSet("Pubs");DataSet pubs = new DataSet("Pubs");

//Create an "Inventory" Table//Create an "Inventory" Table

DataTable inventory = new DataTable("Inventory");DataTable inventory = new DataTable("Inventory");

inventory.Columns.Add("TitleID",typeof(Int32));inventory.Columns.Add("TitleID",typeof(Int32));

inventory.Columns.Add("Quantity",typeof(Int32));inventory.Columns.Add("Quantity",typeof(Int32));

// Add Inventory table to Pubs DataSet// Add Inventory table to Pubs DataSet

pubs.Tables.Add(inventory);pubs.Tables.Add(inventory);

// Add a record to the Inventory table// Add a record to the Inventory table

DataRow row = inventory.NewRow();DataRow row = inventory.NewRow();

row["TitleID"]=1;row["TitleID"]=1;

row["Quantity"]=25;row["Quantity"]=25;

inventory.Rows.Add(row);inventory.Rows.Add(row);

Page 45: visual basic .net

01.01.4545

Manejo de DataSets Manejo de DataSets El Objeto DataViewEl Objeto DataView

Permite establecer una ordenacion y un filtro Permite establecer una ordenacion y un filtro en una vista o tablaen una vista o tabla

Es una vista viva de un DataTableEs una vista viva de un DataTable Cualquier numero de DataViews pueden ser Cualquier numero de DataViews pueden ser

creados sobre un Tablecreados sobre un Table Habilita diferentes vistas de las misma Habilita diferentes vistas de las misma

tablatabla Puede ser usado para DatabindingPuede ser usado para Databinding

Page 46: visual basic .net

01.01.4646

Manejo de DataSets Manejo de DataSets DataSets fuertemente DefinidosDataSets fuertemente Definidos

Mapea Tables a propiedades del DataSetMapea Tables a propiedades del DataSet Clase automaticamente generada por el Clase automaticamente generada por el

DesignerDesigner Hereda del DataSetHereda del DataSet Esquema (Schema) codificado dentro de la Esquema (Schema) codificado dentro de la

claseclase Codigo conciso y leibleCodigo conciso y leible Chequeo de tipos en tiempo de compilacionChequeo de tipos en tiempo de compilacion

Page 47: visual basic .net

01.01.4747

Manejo de DataSets Manejo de DataSets DataSets fuertemente DefinidosDataSets fuertemente Definidos

DataSets, Tables, Rows son ObjectosDataSets, Tables, Rows son Objectos Columns, Relations son propiedadesColumns, Relations son propiedades

//print out each author and their titles//print out each author and their titles foreach (Author myAuthor in Pubs.Authors.Rows) foreach (Author myAuthor in Pubs.Authors.Rows) {{ Console.WriteLine("Name = " + Console.WriteLine("Name = " + myAuthor.au_lname);myAuthor.au_lname); foreach (Title myTitle in myAuthor.Titles)foreach (Title myTitle in myAuthor.Titles) {{

Console.WriteLine("Title = " + Console.WriteLine("Title = " + myAuthor.Title);myAuthor.Title); }} }}

Page 48: visual basic .net

01.01.4848

Manejo de DataSets Manejo de DataSets DataSets fuertemente DefinidosDataSets fuertemente Definidos

Sintaxis como esta (similar a codigo ADO):Sintaxis como esta (similar a codigo ADO):

Puede ser cambiada a sintaxix como esta:Puede ser cambiada a sintaxix como esta:

Ventajas – Más facil de leer, los errores de tipeo se Ventajas – Más facil de leer, los errores de tipeo se capturan en tiempo de compilacion envez que en tiempo capturan en tiempo de compilacion envez que en tiempo de ejecucionde ejecucion

Dim rowCustomer As System.Data.DataRowDim rowCustomer As System.Data.DataRow  For Each rowCustomer In MyDataSet.Tables("Customers").RowsFor Each rowCustomer In MyDataSet.Tables("Customers").Rows Console.WriteLine(rowCustomer.Fields("CompanyName"))Console.WriteLine(rowCustomer.Fields("CompanyName"))NextNext

Dim rowCustomer As System.Data.DataRowDim rowCustomer As System.Data.DataRow  For Each rowCustomer In MyDataSet.Customers.RowsFor Each rowCustomer In MyDataSet.Customers.Rows Console.WriteLine(rowCustomer.CompanyName)Console.WriteLine(rowCustomer.CompanyName)NextNext

Page 49: visual basic .net

01.01.4949

Manejo de DataSets Manejo de DataSets DatabindingsDatabindings

Fuentes para DataBindingFuentes para DataBinding DataReaderDataReader DataTableDataTable DataViewDataView DataSetDataSet DatSetViewDatSetView ArrayArray CollectionCollection IListIList

Page 50: visual basic .net

01.01.5050

Resumen Resumen

ADO.NET es una evolucion natural de ADOADO.NET es una evolucion natural de ADO Modelo Connection/Command comunModelo Connection/Command comun

ADO.NET esta diseñado para trabajar con ADO.NET esta diseñado para trabajar con XMLXML

ADO.NET esta ampliamente integrado con ADO.NET esta ampliamente integrado con el .NET Frameworkel .NET Framework Manejo de excepciones, nombres, Manejo de excepciones, nombres,

notificaciones, etc.notificaciones, etc. Integrado con otros componentes del.NET Integrado con otros componentes del.NET

FrameworkFramework