Professional Documents
Culture Documents
Desarrollo de Aplicaciones
Con Sistemas de Bases de Datos:
Sesión 3.3: ADO.NET 2.0
Desarrollo de Aplicaciones
Contenidos con Sistemas de Bases de Datos
• Historia
• Clases Básicas
• Factoría Abstracta
1
ADO.NET Desarrollo de Aplicaciones
Historia con Sistemas de Bases de Datos
2
ADO.NET Desarrollo de Aplicaciones
Historia (III) con Sistemas de Bases de Datos
• Consumidores de Datos
– DAO (Data Acces Objects)
• Primer intento de MS de crear un API para
consumidores de datos.
• Tenía algunas ventajas sobre ODBC.
• Tenía un rendimiento muy bajo.
– RDO (Remote Data Objects)
• Supera las limitaciones de DAO con ODBC
• No sustituyó a DAO, sino que convivieron durante
algún tiempo por motivos comerciales
3
ADO.NET Desarrollo de Aplicaciones
Historia (V) con Sistemas de Bases de Datos
• ADO.NET
– Es un nuevo modelo (que no una revisión de ADO)
escrito para .NET
– Soporta la comunicación con fuentes de datos a
través de ODBC y de OLE-DB, pero además deja
abierta la posibilidad de manejar el API de cualquier
otro proveedor
• Mayor rendimiento.
– Proporcionaba cinco objetos básicos:
• Connection, Command, DataReader, DataSet y DataAdapter.
– Proporcionaba acceso desconectados a datos, de
modo que el servidor pudiera atender a otras
peticiones.
– Proporciona acceso a Datos Semiestructurados como
XML.
Desarrollo de Aplicaciones con Sistemas de Bases de Datos Sesión 3.2: 7
• ADO.NET 2.0
– Basada en ADO.NET se han añadido nuevas
características para hacer más fácil la tarea de
los programadores.
– Tiene compatibilidad hacia atrás con ADO.NET
– Se ha mejorado considerablemente el
rendimiento con respecto a ADO.NET
– Fuentes de Datos Posibles:
• SiteMap, Objetos de Negocio, Datos en XML, Datos
Access, Proveedores de Datos
Desarrollo de Aplicaciones con Sistemas de Bases de Datos Sesión 3.2: 8
4
ADO.NET Desarrollo de Aplicaciones
Historia (VII) con Sistemas de Bases de Datos
• Clases Básicas:
– Disconnected
• Proporciona la estructura básica de ADO.NET. Eg. DataTable
• Los objetos de estas clases son capaces de almacenar datos
independientemente del proveedor específico
– Shared
• Forman la clase base para los proveedores de datos y son
compartidas por todos ellos.
– DataProvider
• Están definidas para trabajar con distintos tipos de
proveedores. Eg. SqlClient trabaja sólo con SQL Server.
5
ADO.NET Desarrollo de Aplicaciones
Clases Básicas (II) con Sistemas de Bases de Datos
• Operativa:
1. Se crea un objeto Connection y se le pasa todos los
datos necesarios para establecer la conexión
(cadena conexión)
2. Se crea un objeto Command para almacenar la
consulta que se pretende realizar. Hay que decidir
qué devuelve y en qué tipo de objeto se almacena
y si se quiere guardar para utilizarlo después
usando un DataAdapter para rellenar un DataSet o
un DataReader (sólo lectura y sólo hacia delante)
3. Vincular el resultado a un control de servidor como
DataView o DataGrid.
Desarrollo de Aplicaciones con Sistemas de Bases de Datos Sesión 3.2: 11
6
ADO.NET Desarrollo de Aplicaciones
Clases Básicas (IV) con Sistemas de Bases de Datos
– System.Data.Odbc
• Para trabajar con ODBC: incluye OdbcConnection,
OdbcCommand, …
– System.Data.SqlClient
• SqlConnection, SqlCommand, …
– System.Data.Oracle
• OracleConnection, OracleCommand, …
– System.Data.SqlType.
• Definen unas cuantas clases que representan
tipos de datos específicos para SQL Server
• Connection
– Crea un enlace con una fuente de datos.
– Parámetros/Propiedades Habituales para
SQLConnection
• DataSource
– (Sólo Lectura:RO) Nombre de la instancia de SQL Server
• DataBase
– (RO) Nombre de la BBDD usada
• State
– (RO) Devuelve el estado actual de la conexión:
» Broken, Closed, Connecting, Executing, Fetching, Open
• ConnectionString
– (RO) Cadena de Conexión para comunicarse con la Base de
Datos
7
ADO.NET Desarrollo de Aplicaciones
Clases Básicas (VI) con Sistemas de Bases de Datos
• Command
– Usa un objeto Connection para ejecutar
consultas SQL (consultas normales,
procedimientos almacenados o acceso directo
a las tablas mediante ADO.NET)
– Si se usa una consulta SQL Select el resultado
se puede almacenar en un DataSet o en un
DataReader según las necesidades del
programador.
– Tiene varios métodos Execute para distintas
acciones.
Desarrollo de Aplicaciones con Sistemas de Bases de Datos Sesión 3.2: 15
• Command (II)
– Propiedades
• CommandText
– (RW) Fija la consulta que se desea ejecutar
• CommandTimeout
– (RW) Número de segundos que se puede esperar hasta que se
ejecute la consulta. Por defecto 30 segundos.
• CommandType
– (RW) Indica el modo en el que el CommandText debe ser
interpretado:
– Valores: StoreProcedure, TableDirect, Text
• Connection
– (RW) Devuelve o asigna el objeto conexión que debería ser
usado por el comando.
8
ADO.NET Desarrollo de Aplicaciones
Clases Básicas (VIII) con Sistemas de Bases de Datos
• Command (III)
– Métodos Execute
• ExecuteNonQuery
– Ejecuta el comando y devuelve el número de filas afectadas
• ExecuteReader
– Ejecuta el comando y devuelve un DataReader (RO-Sólo hacia
delante)
• ExecuteRow
– Ejecuta el comando y devuelve un SqlRecord (una sola fila)
• ExecuteScalar
– Ejecuta la consulta y devuelve la primera fila de la primera
columna como un objeto genérico
• ExecuteXmlReader
– Ejecuta el comando y devuelve un objeto de la clase
XmlReader
• DataReader
– Es un objeto de sólo lectura y sólo hacia
delante (no se puede “rebobinar”)
– Necesita una conexión constante con la base
de datos, por lo que se debe cerrar cuando
se acabe:
• CommandBehavior.CloseConnection
• DataReader.Close
– No se puede usar su constructor para
instanciarlo, teniendo que llamar al
ExecuteReader de un Command
Desarrollo de Aplicaciones con Sistemas de Bases de Datos Sesión 3.2: 18
9
ADO.NET Desarrollo de Aplicaciones
Clases Básicas (X) con Sistemas de Bases de Datos
MiDataReader = MiComando.ExecuteReader(CommandBehavior.CloseConnection);
gv.DataSource = MiDataReader;
gv es un GridView de la Interfaz de
gv.DataBind(); Usuario [ojo estamos acoplando]
MiComando.Dispose();
MiConexion.Dispose();
10
ADO.NET Desarrollo de Aplicaciones
Clases Básicas (XII) con Sistemas de Bases de Datos
• Reto:
– Investiga sobre cómo tendría que codificarse
para el caso en el que se quisieran hacer
inserciones, actualizaciones o borrados.
• http://quickstart.developerfusion.co.uk/QuickStart
/howto/doc/adoplus/ExecuteCommand.aspx
11
Factoría Abstracta Desarrollo de Aplicaciones
Proveedores Datos con Sistemas de Bases de Datos
• Abstract Factory
– Lo mejor es trabajar sobre Interfaces que
permiten hacer un desarrollo independiente
del proveedor de Datos
12
Factoría Abstracta Desarrollo de Aplicaciones
Proveedores Datos (III) con Sistemas de Bases de Datos
• Implementado en ADO.NET
– ADO.NET 2.0 proporciona las clases necesarias para
ello.
– http://msdn2.microsoft.com/en-
us/library/ms379620(VS.80).aspx
– http://geeks.ms/blogs/pabbate/archive/2006/06/03/4
23.aspx
– http://www.c-
sharpcorner.com/UploadFile/mosessaur/abstractfacto
ryadonet202152006053643AM/abstractfactoryadonet
2.aspx?ArticleID=4468e7cc-57c1-4738-8e83-
a8db48fd1d9f
Desarrollo de Aplicaciones con Sistemas de Bases de Datos Sesión 3.2: 26
13
Factoría Abstracta Desarrollo de Aplicaciones
Proveedores Datos (V) con Sistemas de Bases de Datos
– http://www.daveandal.net/articles/provider-
independent/ Con algunos ejemplos
interesantes
Desarrollo de Aplicaciones
Arquitectura (II) con Sistemas de Bases de Datos
• Contexto
– Diseñamos una aplicación en capas, donde
cada capa expone servicios que otras
aplicaciones o capas pueden consumir, y
donde cada capa puede consumir servicios de
otras
• Problema
– Cuáles son las capas y qué componente se
coloca en cada capa
14
Desarrollo de Aplicaciones
Referencias
con Sistemas de Bases de Datos
• http://msdn.microsoft.com/library/spa/def
ault.asp?url=/library/SPA/vbcon/html/vbor
iVisualBasicInActionEndtoEndSolutions.asp
• http://asp.net/learn/dataaccess/tutorial04
vb.aspx?tabid=63
• http://asp.net/learn/dataaccess/tutorial02
vb.aspx?tabid=63
• http://asp.net/learn/dataaccess/default.as
px?tabid=63
15