Vous êtes sur la page 1sur 39

Conceptos fundamentales de ADO.

NET
Ariel Lopez Falcon Aaron Sanchez Fonseca

Modelo tradicional

Base de datos

Introduccin a ADO.NET
Es una parte integral del framework
ltimo paradigma propuesto por Microsoft

Resuelve los siguientes problemas


Utiliza XML para el transporte de informacin Se pueden enviar resultados a travs de Internet Es posible integrar orgenes XML con facilidad, ej. Servicio Web.

Introduccin a ADO.NET
El espacio de nombres raz para ADO.NET es System.Data
Soporte para varias tecnologas (incluso XML)
System

Data
SQLClient

OracleClient
OleDB

Odbc

ACCEDER A DATOS CON ADO.NET


Tres niveles:
El almacenamiento fsico de datos. Puede ser una base de datos OLE, SQL o un archivo XML. El proveedor de datos. Consiste de objetos Connection y objetos comando para crear una representacin de los datos en memoria. El conjunto de datos. Una representacin en memoria de los datos y sus relaciones con los cuales se trabajan en la aplicacin.

Existen dos tipos de conexiones a base de datos en ADO.NET:


OleDbConnection SqlDbConnection

Conectarse a una Base de Datos


1.

2.

3.

Del men View, escoja Server Explorer. En el Server Explorer, escoja la opcin Connect To Database. Se despliega el cuadro de dilogo DataLink Properties. Seleccione el tipo de proveedor.

Conectarse a una Base de Datos


1.

2.

En el Tab Connection especifique la base de datos a la cual conectarse. Asegrese de que la conexin qued bien hecha con Test Connection. Presione OK.

Ejecucin de comandos en una base de datos


Provee tres mtodos para ejecutar comandos
ExecuteScalar. Realiza comandos que retornan un valor, tales como la cantidad de registros en una tabla. ExecuteNonQuery. Realiza comandos que cambian la base de datos pero no retornan nada. Esto incluye aadir y borrar datos de una base de datos. ExecuteReader. Lee registros de manera secuencial de una base de datos.

PROCESAMIENTO DE TRANSACCIONES
Una transaccin es un grupo de comandos de la base de datos que se tratan como una sola unidad. Los comandos pertenecen a una transaccin si son:
Atmicos. Realizan una nica unidad de trabajo Consistentes. Todas las relaciones entre los datos de la base de datos se mantienen correctamente Aislados. Los cambos hechos por otros clientes no afectan los cambios actuales. Durables. Una vez se realiza un cambio, es permanente.

Comprender las transacciones


En una aplicacin Web las transacciones son importantes, puesto que las bases de datos son un recurso compartido entre muchos clientes. Se puede presentar los siguientes problemas:
Contencin por recursos. Varios clientes pueden intentar cambiar el mismo registro al mismo tiempo Fallos inesperados. El Internet no es la red ms confiable. Los clientes pueden desconectarse inesperadamente Ciclo de vida de la aplicacin. Los formularios Web viven solo por un instante, un cliente puede dejar la aplicacin en cualquier momento con solo escribir una nueva direccin en su browser

Manera de tratar una transaccin


Los Data sets hacen el procesamiento de una transaccin a travs de los mtodos RejectChanges y Update. Los data sets tambin proveen el mtodo AcceptChanges que restaura el estado de los registros en un data set a no cambiados. Los objetos de conexin a la base de datos proveen el procesamiento de transacciones a travs del objeto transaction. El objeto transaction vigila los comandos realizados y provee los mtodos Rollback, Commit y Save para restaura la base de datos, realizar los cambios o crear un punto de guarda dentro de una transaccin. El namespace System.EnterpriseServices provee transacciones de nivel de empresa a travs de la clase ContexUtil. Las transacciones de nivel de la empresa usan el Microsoft Distributed Transaction Coordinator (DTC) que viene con el Microsoft SQL Server 200 para seguir las transacciones a travs de varios formularios Web y a travs de varios componentes COM+

Transacciones Data Set


Los data sets proveen un procesamiento de transacciones implcito. Los cambios en la base de datos no se realizan hasta que se invoque el mtodo Update del adaptador.

Transacciones Data Set

Transacciones Data Set

Transacciones de base de datos


1. 2.

3.

4. 5.

6.

Abra una conexin a la base de datos Cree el objeto transaction usando el mtodo BeginTransaction del objeto connection. Cree objetos comandos a ser rastreados dentro de esta transaccin, asignado la propiedad Transaction a cada comando con el nombre de la transaccin creada en el paso 2 Ejecute los comandos Realice los cambios a la base de datos o restaure el estado de la base de datos, dependiendo del xito de los comandos Cierre la conexin

Manipulacin de datos
Espacio System.Data
Contiene los objetos desconectados

La manipulacin se efecta mediante el objeto DataSet


Cach de datos Relacional

Carga del DataSet


Dim StrConexion As String, StrComandoAutores As String Dim StrComandoEmpleado As String, StrComandoTiendas As String Dim AdEmpleado As OleDbDataAdapter, AdTiendas As OleDbDataAdapter Dim AdAutores As OleDbDataAdapter, DS As New DataSet StrConexion = "Provider=SQLOLEDB.1;User ID=sa;Persist Security Info=False; InitialCatalog=pubs; Data Source=MiServidor" StrComandoAutores = "Select * FROM Authors" StrComandoEmpleado = "Select * FROM Employee" StrComandoTiendas = "Select * FROM Stores" AdAutores = New OleDb.OleDbDataAdapter(StrComandoAutores, StrConexion) AdEmpleado = New OleDbDataAdapter(StrComandoEmpleados, StrConexion) AdTiendas = New OleDbDataAdapter(StrComandoTiendas, StrConexion) AdAutores.Fill(DS, "Authors") AdEmpleado.Fill(DS, "Employee") AdTiendas.Fill(DS, "Stores")

Manipulacin de datos
Capa de presentacin

Windows forms
Aplicacin.Exe

Dataset

Web forms
IE

Internet intranet Dataset


Xml

Capa de negocios Dataset DataAdapter DataAdapter Capa de datos

Negocio a Negocio

Estructura de la informacin
El DataSet contiene 3 colecciones
DataTable DataColumn DataRow

En algunos casos se puede utilizar tambin a DataRelation y Constraint

Estructura de la informacin

Cmo ADO se refiere a los objetos


Cuando se crean los objetos connection, adapter y dataset en tiempo de diseo, se habilita la opcin de typing. Ejemplo:

Aadir una fila


Utilice la coleccin Rows del DataSet. Para aadir una fila, cree un objeto Row y aadirla a la coleccin Rows.

Modificar y Borrar una fila

Modificacin de datos
Conciliacin
Se deben tener los 4 comandos en el adaptador
Propiedad Descripcin

SelectCommand

Almacena la informacin necesaria para obtener las filas de una tabla a cargar en el DataSet. Almacena la informacin necesaria para llevar acabo una modificacin sobre una fila del origen. Almacena la informacin necesaria para agregar una fila al origen. Almacena la informacin necesaria para eliminar una fila de la base de datos.

UpdateCommand

InsertCommand DeleteCommand

Modificacin de datos

Modificacin de datos
Para sincronizar con el origen, se debe invocar al mtodo Update del Adaptador
AdaptadorTiendas.Update(DS, "Stores")

Por ltimo cambiar el estado de las filas


DS.Tables("Stores").AcceptChanges()
Private Sub Conciliar_Click(... 'Enva los cambios de la tabla Stores. AdaptadorTiendas.Update(DS, "Stores") 'Indica que las filas de esta tabla ya han sido enviadas. DS.Tables("Stores").AcceptChanges() End Sub

DataSet
Es posible
Indicar relaciones y restricciones entre tablas Crear DS virtuales Exhibir la informacin jerrquicamente

DataSet
Controlar restricciones, proponer valores por defecto, crear columnas calculadas Leer/Escribir a XML el esquema de la tabla y/o informacin
WriteXML ReadXML

Consumir informacin XML

Crystal Reports y su relacin con ADO.NET


Crystal puede consumir informacin trabajando bajo el modelo conectado o desconectado
Se conoce en Crystal como el modelo Push

Trabajo con datos


Desconectados
Forma de trabajar de ADO.NET Uso de XML

Conectados
T-SQL: Cursores en el servidor Uso de ADO: afecta el rendimiento

Separacin datos-origen
Funcionalidad de acceso a datos
Especfica para el origen de datos a utilizar

Conjunto de datos
Sin funcionalidad de acceso a datos Mayor versatilidad Posibilidad de almacenar ms datos y metadatos

Proveedores de datos
Conjunto de objetos creados y optimizados para acceso a un orgen de datos especfico Interfaces
System.Data

Clases comunes
System.Data.Common

Bases de datos
SQL Server: System.Data.SqlClient Oracle: System.Data.Oracle

Tecnologas estndar:
OLE-DB: System.Data.OleDb ODBC: System.Data.Odbc

Contenedores de datos
Dentro de la librera de clases de la plataforma
System.Data System.Xml

Utilizan XML de forma nativa


Potente Fcil persistencia Legible

Objetos de ADO.NET
Conexin
Vnculo con la BD Pooling automtico Inicia transacciones Tipos
IDbConnection SqlConnection OleDbConnection
Aplicacin

conexin

Objetos de ADO.NET
Comando
Envo de sentencias Transact-SQL
Parmetros
Aplicacin

Puede devolver
Nmero de filas afectadas Un valor escalar Un lector de datos
comando

Tipos
IDbCommand SqlCommand OleDbCommand

conexin

Objetos de ADO.NET
Lector de datos
Lectura secuencial de datos
Por fila Por bytes
Aplicacin

Slo lectura Mximo rendimiento


nica funcionalidad Foward-only

lector comando

Puede manejar varios conjuntos de resultados Tipos


IDataReader SqlDataReader OleDbDataReader

conexin

datos

Objetos de ADO.NET
DataSet tipado DataSet preparado para contener datos determinados en tiempo de diseo
Agiliza desarrollo Mejora rendimiento Evita errores

Diseo visual: esquema XSD

Objetos de ADO.NET
Data Reader
Es una amplia categora de objetos que se utilizan para leer secuencialmente los datos de un origen de datos. DataReaders proporcionar una forma muy eficiente de acceso a los datos, y se puede considerar como un cursor Firehose de ASP clsico, excepto que no del lado del servidor cursor se utiliza. Un DataReader analiza una secuencia de datos tabular de Microsoft SQL Server, y otros mtodos de recuperacin de datos de otras fuentes.

Objetos de ADO.NET
Data Table
se utilizan para representar las tablas de un DataSet. Un objeto DataTable representa una tabla de datos relacionales de la memoria; los datos son locales de la aplicacin basada en .NET en la que residen, pero se pueden llenar desde un origen de datos como Microsoft SQL Server mediante un DataAdapter Para obtener ms informacin, vea Llenar un DataSet desde un DataAdapter.