Professional Documents
Culture Documents
com
ADO .NET es la parte de la plataforma .NET que se encarga del acceso a datos
No es exclusivo de aplicaciones Web, pero est
pensado teniendo muy en cuenta ese uso Internamente, usa XML para transmitir los datos
As, cualquier aplicacin que sea capaz de leer un
fichero XML podra trabajar con los datos obtenidos a travs de ADO .NET
1 2 3 Ana Jorge Luca Gonzlez Fernndez Palacios Gil Garca Salvador 01/03/2001 10/09/1998 01/05/2003
Elementos involucrados
relacionales
Puede ser una consulta (SELECT), una insercin
En el caso de que sea una consulta, devolver unos resultados que trasformaremos a HTML
Espacios de nombres
Dnde estn las clases necesarias para trabajar con ADO .NET?
De forma general, en el espacio de nombres
System.Data
Espacios de nombres
para una base de datos concreta (por ejemplo, SQL Server u Oracle)
Establecimiento de la conexin
Usaremos la clase OleDbConnection Le pasamos una cadena de conexin con los parmetros necesarios
En el caso de Microsoft Access, el proveedor es siempre el que se indica arriba Data Source indica la ubicacin fsica de la base de datos
Si la direccin es relativa (no absoluta) a la pgina .aspx actual, hay que hacer uso de Server.MapPath
Abrir la conexin
Para establecer (abrir) la conexin, no basta con lo anterior Es necesario llamar al mtodo Open
Ejercicio
De la BD Emergentes realice las consultas para los ejercicios del 1 al 5 Crear un WebForm (una pgina .aspx) que trate de establecer una conexin
Lo normal es hacerlo en el evento Load de
Obtendr los datos pedidos que cumplan las condiciones especificadas El formato general es
SELECT campo1, campo2, campo3... FROM tabla1, tabla2... WHERE condicin
Ejemplos:
SELECT * FROM Libro SELECT Titulo FROM Libro WHERE Precio < 20 AND Autor = Pedro Salinas
Resultados
ADO .NET proporciona dos tipos de objetos para acceder a los resultados de una consulta:
DataReader DataSet
DataReader
Un objeto de este tipo est siempre conectado a la base de datos, hasta que lo cerramos
Es decir, mantiene una conexin abierta
DataSet
Es una representacin en memoria de la base de datos completa (mltiples tablas, esquema, relaciones y restricciones) Adems, es desconectado
con la BD
Contiene una coleccin de objetos DataTable, los cuales a su vez tienen una coleccin de
DataRow
DataSet
*
tablas
DataTable
*
filas
DataRow
DataSet
Se puede acceder a los elementos de esas dos colecciones como se hara con cualquier otra coleccin en C#
Con un bucle foreach
Mediante un ndice
O con la clave primaria (para ir a las filas) o
Gracias a su naturaleza desconectada, un DataSet se puede enviar por la red como un flujo XML
DataSet o DataReader?
Dada la naturaleza de las aplicaciones Web (donde lo habitual es hacer una consulta, transformar esos datos a HTML y cerrar la conexin), el uso de un DataReader puede ser ms apropiado, por eficiencia (rapidez)
A pesar de la mayor flexibilidad del DataSet
Veamos un ejemplo de cmo sera una consulta empleando un DataSet (y qu otras clases son necesarias entonces).
Adaptador
Decamos que el DataSet no sabe nada acerca del origen de los datos
Se comunica con ellos a travs de un
DataAdapter
DataAdapter
OleDbCommand
Creamos un objeto de este tipo con la sentencia SQL que queramos ejecutar:
String consultaSql = "SELECT * FROM Libro"; OleDbCommand consulta = new OleDbCommand(consultaSql, conexion);
Ejecutar la consulta
obtenidos Se hace con el mtodo Fill del adaptador, al que le pasamos como parmetro el
DataSet
{
... fila["Titulo"]... }
DataReader
Muchas veces, en las aplicaciones Web, no merece la pena pagar por la flexibilidad que ofrece DataSet
Es ms difcil de usar y tiene peor rendimiento que el DataReader
Al igual que el DataSet, el DataReader tambin se usa en conjuncin con las clases Command
String consultaSql = "SELECT * FROM Libro";
OleDbCommand consulta = new OleDbCommand(consultaSql, conexion);
Hay que ir leyendo uno a uno los registros devueltos con el mtodo Read de DataReader
while (resultados.Read()) { ... resultados["Titulo"]... }
Aunque con lo anterior podra bastarnos para mostrar pginas dinmicas sencillas, como los listados anteriores, ASP .NET proporciona unos controles especficos para mostrar datos, ms sofisticados. Veremos unas nociones sobre ellos.
Introduccin
aqul Los datos normalmente se asocian a una propiedad determinada del control
Los controles enlazados (data bound controls) constituyen una de las caractersticas ms potentes de ASP .NET para el desarrollo de aplicaciones Web
Colecciones normales de .NET Arrays, diccionarios, listas enlazadas, tablas hash, pilas, colas Estructuras de datos definidas por el usuario Que implementen la interfaz ICollection Clases orientadas a bases de datos, como DataTable o
DataSet
Sintaxis
Una expresin de enlazado a datos es cualquier texto encerrado entre <%# y %> Un ejemplo muy tonto:
Label1.Text = <%# Hola, mundo %>;
(Ntese el uso de los distintos tipos de comillas)
ListBox
Controles iterativos:
Repeater, DataList
y DataGrid
Aunque este control sigue funcionando, en ASP .NET 2.0 es sustituido por otro ms potente, el GridView. Lo sigo comentando simplemente por si alguien sigue trabajando con ASP 1.0 (Visual Studio 2003, en vez del 2005).
DataGrid
Un control muy potente para mostrar datos enlazados en formato tabular Tiene muchsimas capacidades de formateado, ordenamiento por columnas, manejo de eventos, etctera Veremos un ejemplo muy sencillo simplemente para mostrar cmo se enlazan datos a un control
Aprovecharemos este control para ver una caracterstica avanzada de ASP .NET 2.0: la posibilidad de extraer la cadena de conexin a la base de datos al fichero de configuracin (Web.config u otro).
Cadena de conexin
En ese caso:
<asp:GridView ID="ListadoLibros" runat="server" DataSourceID="Libreria" AutoGenerateColumns="True">
</asp:GridView>
Repeater
cmo se tiene que mostrar, mediante una serie de plantillas predefinidas Es til cuando no nos sirve el formato tabular del GridView, donde se muestra siempre una fila por registro devuelto
Plantillas
HeaderTemplate
Se visualiza una nica vez, antes de cualquier otra fila
ItemTemplate
La ms habitual Determina el formato de salida de cada fila del origen de datos
AlternatingItemTemplate
Lo mismo para las filas alternas (por si queremos darles otro
formato)
SeparatorTemplate
Lo que queremos que aparezca entre cada fila No puede tener datos enlazados
FooterTemplate
Una nica vez, al final de la tabla Tampoco puede contener datos enlazados
En ASP .NET 1.0 la sintaxis era mucho ms farragosa (mediante el mtodo esttico DataBinder.Eval):
<%# DataBinder.Eval(Container.DataItem, Titulo) %>;
ODBC: Driver={SQL Server}; Server=your Server name; Database=DBname; Uid=your uid; Pwd='your password'; OLE DB, OleDbConnection (.NET): Provider=sqloledb; Data Source= your Server name; Initial Catalog= DBname; User ID=your uid; Password='your password'; SqlConnection (.NET): Data Source=your server name; Initial Catalog=DB name; User ID=your uid; Password='your password';
Ms informacin
Gracias