Vous êtes sur la page 1sur 101

Fechas:

Horario:

26/10/09 12/11/09
De 15:50 a 19:15 horas Lunes -Jueves

Profesor: Javier Roig Garro


dunbit@hotmail.com

ACCESO A BASES DE DATOS SQL


CON ASP.NET
Visual Studio .NET 2005 - ASP .NET - SQL 2005

Temario
1. Introduccin a Visual Studio.NET (1 sesin)

Conceptos bsicos. El entorno de trabajo. Carpetas de sistema y archivos de configuracin.


Acceso a bases de datos desde VS.NET

2. Conceptos bsicos (3 sesiones)

Manipular controles y sus propiedades. Controles bsicos, label, textbox y button. Controles
Lista, listbox, dropdownlist, chekboxlist. Eventos y PostBack

3. Familia de Controles de acceso a datos DataSource (1 sesin)

SqlDataSource. Definicin de la conexin a la base de datos

4. Controles de presentacin de datos (3 sesiones)

Controles plantilla, datalist. Controles tabla, Gridview, Detailsview, Formsview

5. Introduccin ADO.NET(3 Sesiones)

Conceptos bsicos de la estructura system.data. Connection. Command. DataReader

6. Trabajar con datos de forma desconectada(3 sesiones)

DataAdapter. DataSet

7. Paso de parmetros y Procedimientos almacenados(1 Sesin)

Definicin de parmetros y su uso con el objeto command. Llamada a procedimientos


almacenados

8. Gestin de Errores (1 Sesin)

Canalizar errores. Generar excepciones segn el tipo de error

1 Introduccin a Visual
Studio.NET
Conceptos bsicos.
El entorno de trabajo.
Carpetas de sistema y archivos de
configuracin.
Acceso a bases de datos desde VS.NET
3

Introduccin

Definicin

Modelo de programacin consistente para todas


las plataformas
Interoperabilidad entre tecnologas
Fcil migracin
Soporte HTML, XML, SOAP

Elementos del ncleo de .NET


a.

.NET Framework.

b.

.NET Building Block Services.

c.

Visual Studio .NET.

d.

.NET Enterprise Services.Herramientas asociadas. SQL,

Conjunto comn de servicios para


desarrollo de aplicaciones independientemente del lenguaje. No es
necesario distribuir un runtime especifico
Servicios Webs
distribuidos programables que pueden funcionar tanto en intranet
como en internet
Entorno para simplificar desarrollo,
depuracin y mantenimiento de software
Biztalk, Integration Host Services, Aplication Center, Iternet Security
and Acceleration Server 2000, Commerce Server.

.NET FrameWork Componentes

Commond Languaje Runtime (CLR)


. NET Framework library
ADO .NET
ASP .NET
Interfaz de usuario

Commond Language Runtime

Descripcin

Simplifica desarrollo por


un entorno robusto
Soporta mltiples
lenguajes
Proporciona un entorno
gestionado (Garbage
collection, seguridad)

CLR Componentes

Class Loader. Carga en memoria y prepara para su ejecucin


MSIL (Microsoft Intermediate Languaje). Convierte MSIL a cdigo
nativo justa antes de ejecutar
Code Manager. Gestiona la ejecucin del cdigo
Garbage Collection. Controla el ciclo de vida de todos los objetos
Security Engine. Permite tener seguridad por el origen del cdigo
y por el usuario
Debug Engine. Depurar y realizar trazas del cdigo
Type Checker. Evita uso incorrecto de variables no inicializadas
Excepcion Manager. Estructura de manejo de excepciones.
Thread Suport. Programacin multihilo.
Com Marshaled. Gestion de comunicacin de objetos com
.NET FrameWork Class Library Support.

.NET FrameWork Librera de Clases


Namespace.

Organizacin Lgica de tipos y clases base relacionadas.


Un namespace puede agrupar otros namespaces

System. Contienen definicin de las clases


fundamentales

Sytem.Collections. Ordenacin de listas, agrupacin de datos


System.IO. Entrada y salidad de datos a ficheros, streams.
System.NET. Protocolo TCP/IP y control de socket

..... .NET Framework SDK Documentation

ADO .NET

Nueva generacin de ActiveX Data Object


Soporta programacin desconectada
Provee soporte para XML
System.Data. Namespace que contiene la clase
DataSet
System.XML Namespace que soporta XML segn
la compilacin W3C.

10

System.XML.Xsl, soporta transformaciones.


System.XML.Serializacion, contiene la base para los
Servicios Web

Qu es ASP.NET

Evolucin ms flexible de ASP


Pginas Web Dinmicas que pueden acceder los
recursos del Servidor
Procesamiento del lado del Servidor de
Formulario Web
Servicios Web XML que permiten crear
Aplicaciones Web distribuidas
Independiente del navegador
Independiente del Lenguaje

11

Caractersticas del
Entorno de Desarrollo

IDE (Integrated Development Evironment)


Elementos de un proyecto
Uso de las caractersticas del entorno
Depuracin de un proyecto
Compilacin en .NET

12

IDE - Introduccin

Solo un entorno para todas las herramientas de


desarrollo
Una solucin puede contener mltiples
lenguajes
Una solucin puede contener mltiples
proyectos
Personalizar el entorno de trabajo
Visor de Internet integrado
Depuracin de cdigo

13

IDE - Plantillas de Trabajo

Aplicacin Windows, Aplicacin estndar


Librera de Clases, a modo de dll de vb 6
Windows Control Library, Controles definidos por el usuario.
ASP .NET Web Aplication, aplicacin que se va a ejecutar en un
Internet Information Server.
ASP. Web Services, aplicacin que va a proveer de servicios
XML a aplicaciones clientes
Web Control Library, Controles de usuario para aplicaciones
web.
Aplicacin de consola, se ejecuta en la lnea de comandos
Otras (Servicios Windows, proyectos vacos..)

14

Ficheros de un proyecto

Fichero de la Solucin (.sln, .suo)

Fichero de proyecto (.vproj)

.sln, Contiene la informacin de varios proyectos


.sou, personalizacin del proyecto por el usuario
Fichero XML que contiene referencias a todos los elementos del proyecto.
Segn el lenguaje cambia el tipo (en c# son .csproj)

Ficheros Web

Clases, formularios, modulos... (.vb)

Servicios Web XML (.asmx)


Formularios Web (.aspx)

Diferentes elementos se pueden guardar en el mismo fichero.

El cdigo se almacena en ficheros .vb

Clases Web Globales (.asax)


Web.config

Ensamblado (.dll)
Bases de datos

15

SQL Express (.mdf)


Access (.mdb)

Carpetas reservadas

Desde el explorador de soluciones


Bin
.dll
App_Browsers .browser
App_Code .cs, .vb, .xsd
App_Data .mdb, .mdf, .xml
App_GlobalResources .resx
App_LocalResources .resx
App_Themes .skin, .css, .xsl
App_WebReferences .wsdl

16

Assemblies y Referencias

Ensamblados (.dll , .exe y ficheros auxiliares)


.Net FrameWork tiene ensamblado predefinidos
Se crean automticamente cuando se construye un
proyecto
Referencias a elementos externos del proyecto.

.NET
COM
Proyectos

Men Proyecto Agregar Referencia


Botn derecho en el proyecto Agregar Referencia

17

Conceptos Acceso a Datos

Modelo ASP 2.0 vs ASP 1.1


Nuevos controles

DataBindig Enlazar controles a un origen de datos

Ms ligeros
Ms fciles de utilizar
Menos cdigo para obtener los mismos resultados

Simple, enlaza un control a un campo del origen de datos.


Compleja, enlazar un control a varios campos de un origen de
datos

App_Data

18

Carpeta por defecto para establecer los orgenes de datos


Puede contener Access (mdb), SQL Express (mdf), XMl

Tipos de Controles

Tipos

Cadenas de conexin

Especficos para enlazar a origen de datos GridView


Generales, se pueden enlazar aunque con limitaciones TextBox
Mixtos, permiten trabajar con un origen de datos o independientes
ListBox
Controles de Acceso a datos, no son visibles pero permiten enlazar a
otros controles SQLDataADapter

Genera automticamente en funcin del origen de datos


Muestra por defecto el contenido de App_Data
Permite guardarlas en web.config

DataSource vs DataSourceid

19

DataSourceId, indica el control de origen de datos, en cambio


Datasource indica el objeto de origen de datos

Librerias

Conjunto de clases que permite trabajar con bases de


datos mediante System.Data
Acceso a mltiples tipos de bases de datos
Uso de proveedores de datos como antes era DAO, ADO,
OLEDB
Dos libreras con objetos parecidos

SQL .NET (SQLDataReader) -> Para SQL Server


OLE DB .NET (OLEDBDataReader) -> Otros
Imports System.Data
Imports System.Data.SqlClient
Using System.Data
Using System.Data.SQLClient

20

Proveedores de Acceso a Datos

Espacio de nombres

Elementos

21

System.Data.SQLClient, acceder a SQL Server 7.0 o


posterior
System.Data.OLEDB, cualquier otro tipo de acceso a datos
Objeto Connection para conectarse con la base de datos
Objeto Command para ejecutar comandos con la base de
datos
DataReader, para crear conjunto de datos de solo lectura
DataAdapter objeto para intercambiara datos entre un
origen de datos y un DataSet

La informacin viaja entre cliente y servidor mediante


XML

2 Conceptos bsicos
Manipular controles y sus propiedades
Controles bsicos, label, textbox y button
Controles lista, listbox, dropsdownlist, checkboxlist
Eventos y Postback

22

Tipos de controles servidor

HTML server controls

Aadir runat=server para tratarlo en el modo


servidor

Web server controls

23

Integrados, equivalentes a los controles HTML


Validacin, testar los datos introducidos
Enriquecidos, funcionalidad avanzada
Enlazados a datos
Controles Web, presentacin de datos en navegadores

Controles de servidor HTML

Acceso desde el lado de servidor


Las propiedades son todas tipo String, por lo
que solo se detecta los errores cuando se
ejecuta
Esta dentro de una etiqueta <Form ...
Runat=server>

Interesa cuando utilizan funciones de java


Permite actualizar rpidamente una pgina html
con nuevas funcionalidades

<input type=text id=textname runat=server>

24

Controles WEB de Servidor

Creados para ASP.NET


No tienen funcionalidad si no tienen una
etiqueta runat=server
Propiedades son tipadas, permite detectar
errores antes de compilar
Namespace System.Web.UI.WebControls

25

Guardar el estado. ViewState

Cada vez que se pide una pgina se construye la pgina


y todos sus controles y se destruye despus de que se
envi al navegador para aumentar la capacidad del
servidor
Soluciona el problema de que se limpien los controles
cuando viaja entre el servidor y el cliente.
Control oculto _VIEWSTATE, guarda el estado dentro de
una seccin <form ... Runat=server>
Contiene un string de pares nombre-valor, con los
nombres de cada control y el ltimo valor
Cada peticin se actualiza el control
Habilitar viewState a nivel de @Page o a nivel de control

<%@ Page EnableViewState=true %>


<asp:ListBox id=ListName EnableViewState=true
runat=server></asp:listbox>

26

Controles Comunes

Creacin en tiempo de Diseo

Posicionamiento Absoluto o relativo

Desde la barra de herramientas de controles


Creacin del cdigo HTML de forma directa
Herramientas Opciones Diseador HTML Posicin CSS

PostBack

27

Hay controles que automticamente generan un postback


(button)
Otros controles (textbox) no lo tienen y sus eventos se
disparan cuando uno que si lo tiene se ejecuta
Se puede modificar el comportamiento modificando la
propiedad AutoPostBack a True del control

Controles WEB de Servidor - Integrados


Control de servidor

Equivalente HTML

Funcin

<asp:button>

<input type=submit>

Crea un botn que envia una


peticin al servidor

<asp:checkbox>

<input type=checkbox>

Casilla de verificacin

<asp:hyperlink>

<a href=...> </a>

Hiperenlace a una etiqueta


HTML

<asp:image>

<img srec=... >

Crea un rea para mostrar una


imagen

<asp:imagebutton>

<input type=image>

Botn con imagen en vez de


texto

<asp:LinkButton>

No tiene

Botn con apariencia de


hiperenlace

<asp:label>

<span> </span>

Texto que no puede modificar el


usuario

<asp:listbox>

<select
size=5></select>

Lista de elementos de seleccin


mltiple

28

Controles WEB de Servidor Integrados

Control de servidor

Equivalente HTML

Funcin

<asp:panel>

<div></div>

Panel contenedor de controles

<asp:radiobutton>

<input
type=radiobutton>

Botn de radio

<asp:table>

<table> </table>

Crea una tabla

<asp:textbox>

<input type=text>

Cuadro de texto

<asp:literal>

No tiene

Texto

29

Controles WEB de Servidor - Validacin

Control

Funcin

CompareValidator

La entrada tiene que coincidir con otra entrada

CustomValidation

La entrada tiene que cumplir un criterio

RangeValidator

La entrada tiene que estar en un rango

RegularExpressionValidat
or

Tiene que cumplir un patrn

RequiredFieldValidator

Usuario tiene que entrar un valor antes de que se


procese el control

ValidationSummary

Recoge todos los mensajes de error de los


controles de validacin para mostrarlos
centralizados

30

Controles WEB de Servidor - Enriquecidos

Control

Funcin

AdRotator

Secuencia de imgenes, aleatorias o no

Calendar

Muestra un calendario

31

Controles WEB de Servidor - Enlazados

Control

Funcin

CheckBoxList

Columna de valores en formato checkbox

Repeater

Muestra informacin de un dataset utilizando un


conjunto de controles HTML, se repite para cada
valor del dataset

DataList

Similar al repeater pero en formato lista

DataGrid

Muestra la informacin de un dataset en columnas

DropDownList

Muestra los datos en un desplegable

ListBox

Muestra los datos en una ventana

RadioButtonList

Muestra una columna de botones de opcin

GridView

Versin avanzada del Data grid

32

Controles Comunes

Label,

Muestra informacin que se puede modificar desde el cdigo


del servidor
Para texto fijo mejor utilizar el control literal de HTML
Utilizar la propiedad text para escribir el valor

TextBox

Muestra y recoge informacin del usuario


Propiedad text contiene el texto del textbox
TextMode, Formato del cuadro de texto

33

SingleLine, Multiline, Password

Columns, Rows, mximo ancho y largo del cuadro de texto


MaxLength, nmero de caracteres mximo

Controles Comunes II

Button

CheckBox

34

Boton que genera un postback al servidor


Tipo submit (por defecto), solo genera un postback al
servidor
Tipo command, indicar el nombre de la accin en la
propiedad commandName. Se gestiona con el evento
command
Propiedad CausesValidation, por defecto true, hace
que se valide el formulario
Permite seleccionar entre cierto y falso
Checked indica su estado
Text, el literal que muestra
Evento CheckedChange se ejecuta cuando hay un
cambio en la propiedad check.
Autopostback por defecto es false

Controles Comunes III

RadioButton

35

Seleccionar opciones de forma exclusiva en un


grupo
GroupName, todos los que tengan el mismo valor
se validan juntos
Text, contiene el ttulo
Checked, indica si est activo o no

Controles Navegacin

Web.SiteMap

SiteMapPath

Enlaza con el XML y permite utilizarlo con otros controles


StartingNodeOffset

TreeView

Representa web.sitemap

SiteMapDataSource

XML con la representacin del sitio web

Representacin de un SiteMapDataSource
Formado por TreeNode
Permite colapsarse o expandirse

Menu

36

Representacin de un SiteMapDataSource
Formado por MenuItem
Permite programar eventos servidor o redireccin a pginas

Controles Enlazados

ListBox, lista de datos

Utiliza la coleccin Items que contiene todos los


elementos
Cada uno tiene la propiedad Text que es lo que muestra
y Value que es lo que devuelve al servidor
Se enlaza a un DataSource y a un DataMember
SelectedIndex, SelectedItem, SelectedValue es la forma
de acceder al elemento seleccionado

DropDownList

Similar al listBox, pero solo muestra los valores cuando


se despliega la lista

37

Controles Enlazados II

CheckBoxList

Similar al listbox donde se puede hacer la seleccin


marcando las casillas
RepeatDirection y RepeatColumns son propiedades
para indicar como rellenar el control con los valores
Selected, indica si el item est seleccionado

RadioButtonList

Similar al chekboxList pero solo se puede seleccionar


una opcin

38

Eventos Qu son eventos

Accin que responde a una actuacin del


usuario con un control de la pgina
Tipo de evento por rea de ejecucin

Eventos de servidor
Eventos de cliente

Ejemplo de evento

39

Pulsar un botn Submit

Eventos Cliente

Se ejecuta en el equipo cliente, no se enva


informacin al servidor
Solo para controles HTML
Ejecutan inmediatamente
Eventos tipo onChange y mouse Keys
Sintaxis
<SCRIPT languaje=javascrip>
OnClientClick="return confirm('Seguro que
quieres eliminar')"

40

Eventos Servidor

Se ejecuta en el equipo servidor, la peticin se enva al


servidor para su proceso
Los procedimientos de evento es cdigo compilado que
est en el servidor
Sirve para controles HTML y Web
Soporta un nmero menor de eventos, por la demora del
envo de la informacin

Algunos OnChange
NO soporta MouseKeys

Sintaxis
<SCRIPT languaje=vb runat=server>
<SCRIPT languaje=c# runat=server>

41

Creacin de Eventos

Acceso a los eventos

Al hacer doble clic sobre un control, se crea un evento con


el mismo Id que el control
Seleccionar el evento de la lista
Seleccionar el botn eventos en las propiedades del
control

Argumentos
El objeto que enva el evento (sender)
Una instancia del evento (e)

Tipo EventArgs, sin informacion adicional


Imgenes ImageClickEventArgs, informacin de
coordenadas

Utilizar Ctype para convertir sender


42

Creacin de Eventos

AutoEventWireup

Si hay que especificar los procedimientos para los


eventos o los toma dependiendo del nombre del
procedimientos

Gestionar varios controles con HANDLED


Procedimientos de eventos personalizados

43

AddHandler
AddressOf

Eventos de pgina

Orden de generacin de los eventos

Page_init
Page_Load
Eventos de Control
Page_Unload

Hay eventos de control que no se ejecutan hasta que el


Web Form se enva al servidor (Change)
PostBack, envo de informacin al servidor
Se puede forzar si el control tiene la propiedad
AutoPostBack=true

44

Trabajar con eventos PostBack

El evento Page_Load se ejecuta cada llamada


Propiedad page.isPostBack, determina si ya se
ha enviado al servidor
If not Page.IsPostBack then
Ejecuta solo la primera vez

End If
If (!Page.IsPostBack)
{
//ejecuta la primera carga
}

45

Trabajar con controles comunes

Acceso a los controles de una pgina web

Objeto Me
Coleccin de controles

Escribir informacin

Asignar la informacin segn el tipo

control.propiedad=valor

Leer informacin

Almacenar la informacin en una variable


Utilizacin en una funcin

46

Variable=control.propiedad
If control.propiedad then..

Trabajar con Listas

Colecciones de elementos

Escribir informacin

Propiedad items
Mtodo ADD de la propiedad items
Asignar a un origen de datos

Leer informacin

47

Elemento Seleccionado
Recorrer la coleccin items

Trabajar con Controles de Navegacin

Crear mens en tiempo de ejecucin

Leer informacin

Crear el nodo o el elemento


Aadir el nodo al men o al rbol
Propiedad Items y ChildItems en los mens
Propiedad Nodes en losTreeview
Recorrer el men/rbol mediante los nodos

Responder al Evento

48

Propiedades SelectedNode, SelectedMenuItem

3 DataSource
Conceptos
Tipos de controles
Data Set con Tipo

49

Controles Origen de Datos

SqlDataSource

AcessDataSource

Enlaza con objetos de negocio definidos en una clase


Seleccionar el objeto y los mtodos a utilizar

XmlDataSource

Enlaza con bases de datos Access


Igual que el anterior pero ms limitado

ObjectDataSource

Enlaza con un origen de datos SQL (no solo SQL Server)


Especificar base de datos, consulta/ tabla, filtros,
ordenacion

Enlaza con un origen de datos XML


Especificar archivo, el archivo de transformacin (si es
necesario) y xPath para indicar el tipo de nodo a mostrar

SiteMapDataSource

50

Enlaza con web.sitemp para crear la estructura de navegacin


del sitio

SQLDataSource

Enlaza controles web con bases de datos SQL

Cadena de conexin

Utiliza una cadena de conexin diferente en funcin del tipo de base de


datos

Se pueden almacenar en <connectionStrings> del web.config

Comandos

SelectCommand, UpdateCommand, DeleteCommand, InsertCommand

Admiten sentencias SQL o nombres de Procedimientos almacenados

Permite especificar parmetros

Databind ejecuta el comando select

Algunos controles (Gridview) los llaman automticamente

Puede devolver un DataSet o un dataReader

Permite cachear la informacin

Se puede ordenar la informacin que devuelve

51

AccessDataSource

Enlaza controles web con bases de datos Microsoft Access

Propiedad DataField identifica la base de datos

Se puede utilizar rutas relativas (~/App_Data/bd.mdb)

Comandos

SelectCommand, UpdateCommand, DeleteCommand, InsertCommand

Admiten sentencias SQL o nombres de consultas

Permite especificar parmetros

Databind ejecuta el comando select

Algunos controles (Gridview) los llaman automticamente

Se puede ordenar la informacin que devuelve

52

ObjectDataSource

Enlaza controles web con objetos de la capa de negocio

Se utilizan en arquitecturas de tres capas

Comandos se enlazan con mtodos

SelectCommand, UpdateCommand, DeleteCommand, InsertCommand

Databind ejecuta el comando select

Algunos controles (Gridview) los llaman automticamente

Se puede cachear, pero no es recomendable para datareader

Se puede ordenar la informacin que devuelve

53

XmlDataSource

Enlaza controles web con archivos XML

Se especifica en la propiedad DataField

Se utiliza para leer informacin aunque se puede modificar con


restricciones con el mtodo SAVE

No tiene control de concurrencia

Tiene que existir previamente el archivo

Permite cachear la informacin

NO Se puede ordenar la informacin que devuelve

Se pude filtrar con XPath

54

SiteMapDataSource

Enlaza controles de navegacin con el archivo del mapa del sitio

Nodo inicial, identifica a partir de donde se muestra la informacin

StartingNodeOffset, nmero de nodos que tiene que mostrar con


respecto a la pgina actual

55

DataSet con tipo

Permiten crear una capa de acceso a datos independiente de la


base de datos

Se ubican por defecto en App_Code

DataSet formado por DataTables

DataSet esta utiliza TableAdapters para definir la conexin y


mtodos

Creacin

Agregar nuevo elemento data set

Asistente

Cadena de Conexin

Definicin de esquema

Mtodo para llenarlo

Mtodos para actualizarlo

Utilizacin
Dim taAutor as new BibliotecaTableAdapters.AutorTableAdapter
Girdview1.datasource=taAutor.GetAutor
56

DataSet con tipo - Parmetros

Creacin

Indicar parmetro con nombre @parametro

Aadir los mtodos de llenado y de generacin del dataSet

Verificacin de los parmetros en tiempo de diseo

Utilizacin

57

Igual que en el caso de mtodos que no tiene parmetros

DataSet con Tipo Modificar Datos

Creacin de mtodos directos

Modificar la informacin directamente en la base de datos

Se pasan como parmetros los valores

Uso de Scope_identity

Identificar uso de Scalar

Actualizacin por Lotes

Utilizar las propiedades de TableAdapter

Se generan automticamente desde el asistente

Definicin de las sentencias entre varias tablas

El generador de consultas no sabe trabajar con Join

Podemos utilizar subconsultas

58

Espacio de nombres System.ComponetModel

Necesario para crear clases que definan el


comportamiento de componentes y controles
System.ComponentModel.DataObject.

DataObjectMethodAttribute.

Enlaza con ObjectDataSource


Identifica el tipo de operacin

DataObjectMethodType

Enumeracin de tipos de mtodos existentes


<System.ComponentModel.DataObjectMethodAttribute(System.Compo
nentModel.DataObjectMethodType.Select, True)> _
Public Function GetListaAutor() As Biblioteca.AutorDataTable
Return AutorAdapter.GetAutor
End Function

59

DataSet con Procedimientos Almacenados

Crear una consulta dentro del TableAdapter

Utilizar procedimientos existentes

Seleccionar el procedimiento existente


Determinar los datos que devuelve

Crear Procedimientos automticos

60

Crear a la vez que el table adapter


Seleccionar el tipo de operacin
Genera el cdigo en la base de datos

4 Controles de presentacin de
datos
DataBinding
Controles Enlazados

61

DataBinding

Enlazar controles a un origen de datos

62

Propiedad DataSource, identifica el origen de datos


puede ser un dataSet,
Propiedad DataSouerceID, indica el control origen de
datos que est vinculado a los datos
Propiedad DataMember, dentro de un origen de datos
con mltiples tablas puede especificar la tabla o la
vista que queramos asociar
Propiedad DataKey, el campo clave del control cuando
se selecciona un elemento del mismo
Metodo DataBind, actualiza los datos que recibe a
travs de la propiedad DataSource.

Enlazar controles simples

Eval

Bind.

Enlazar una propiedad con un campo


Permite modificar el campo
Control.propiedad=<%# Bind(nombre) %>

DataFormatString

Enlazar una propiedad con un campo de la base


de datos
Solo de lectura
Control.propiedad=<%# Eval(nombre) %>

{0,formato}

Utilizar la etiqueta inteligente

63

Repeater

Utiliza formatos de Plantilla


Muestra informacin de cada registro del origen de
datos en una fila
Hay que especificar los campos que se quieren mostrar
desde la ventana de cdigo
Se traduce en el navegador como una tabla
Evento ItemDataBound
Plantillas

HeaderTemplate
ItemTemplate
AlternatingItemTemplate
SeparatorTemplate
FooterTemplate

Paginacin mediante programacin


Utilizar botones y canalizar con el evento
ItemCommand y la propiedad CommandName
64

DataList

Muestra la informacin de cada registro del origen de datos


en una fila del control
Permite indicar que campos queremos mostrar mediante
plantillas
Es la versin avanzada de Repeater
Evento ItemDataBound, itemCreated, itemDataBound
Enlazar los campos con Eval o Bind
Plantillas

65

HeaderTemplate
AlternatingItemTemplate
SelectItemTemplate depende de la propiedad SelectedIndex
ItemTemplate
InsertTemplate
EditItemTemplate
SeparatorTemplate
FooterTemplate
Encabezado y Pie no admiten databound pero s mediante cdigo

GridView

Muestra informacin en formato tabla


Esta formado por una coleccin de GridViewRow (Filas)
y DatacontrolField (Columnas) que dan lugar a
DataControlFieldCell (Celdas)
Cada Fila contiene una coleccin de celdas (cell)
Formato se puede dar mediante el asistente
Evento RowDataBound para manipulara elementos
GridViewRow
Trabajar con Plantillas

Convertir columna en plantilla


Dentro de cada plantilla de columna tenemos ItemTemplate,
EditItemTemplate
Bind,Eval manualmente o desde Etiqueta inteligente

Mostrar informacin en el pe del control

66

Activarlo por columna ShowFooter=true


utilizar en el evento
RowDataBounde.row.type=DataControlRowType.Footer

DetailsView

Muestra nicamente un registro de un origen de datos


Permite navegar por los registros con la propiedad
AllowPaging
Se utiliza junto a Gridview para crear formularios
maestro/detalle
Evento DataBound, se dispara cuando tiene datos.
Manipular DataItem del tipo System.data.DataRowView
Trabajar con Plantillas

67

Agregar columnas de Plantilla


Utilizar funciones dentro del cdigo ASPX

FormsView

Similar a Details View, pero con ms funcionalidad


Permite la edicin de plantillas para los distintos
modos, seleccin, edicin e insercin
Acceso a los controles desde el cdigo con Findcontrol

Plantillas

68

ItemTemplate
HeaderTemplate
FooterTemplate
EmptyDataTemplate
PagerTemplate
EditItemTemplate/IsertItemTemplate

5 ADO.NET
Objeto Connection
Objeto Command
Objeto Reader
Objeto DataAdapter
Objeto DataSet
Data Designers y Data Binding

69

Presentacin - Estructura ADO.NET

70

Introduccin

Objetos de acceso a datos conectados

Connection
Command

Objetos de acceso a datos desconecatados

71

DataAdapter
DataSet

Objeto Connection

1 Establecer el tipo de conexin

2 Especificar el origen de datos

SQLConnection, bases de datos SQL


OleDbConnection, Access y SQL antigos
ODBCConnection, Otro tipo de base de datos
ConnectionString, informacin sobre el origen de datos
Varia un poco de SQL, OLEDB y ODBC

3 Conectar con el origen de datos

72

Mtodo OPEN, antes de poder trabajar con la base de datos


Mtodo Close, al finalizar los trabajos con la base de datos

Objeto Connection

Propiedad ConnectionString, parmetros para


establecer la conexin con la base de datos
Guardar la cadena en web.config
Facilita los cambios de ubicacin de la base de datos
<configuration>
<connectionStrings>

<add name=BaseDatos.

</connectionStrings>
<configuration>

Obtener desde el cdigo la cadena de conexin


Dim cadena as string
cadena=ConfigurationManager.ConnectionStrings(Base
Datos).tostring

73

SQL Conecction

Establecer acceso a bases de datos SQL


Server 200 o posterior
Ejemplo SqlConnection
dim conSql as new sqlClient.sqlconnection()
conSQL.conectionString=Integrated security=true;
data source=localhost; Catalog=Pubs;
conSql.Open()

74

SqlClient ConnectionString

75

Nombre

Descripcin

Por Defecto

Connect Timeout

Tiempo antes de que de


15 seg
error

Initial Catalog

Nombre de la base de
datos

User Id

Cuenta de Sql para


iniciar

Psw

Contrasea de Sql

Data Source

Nombre del servidor

Trusted
Connection

Conexin integrada de
Windows

False

OleDbConnection

Similar a SQLConnection
ConnectionString casi igual que en ADO
Dim conAccess as New OleDb.OledbConnection()
conAccess.connectionString=Provider = Microsoft.Jet.Oledb.4.0;Data
Source= c:\Nortwith.mdb
conAccess.Open

76

Nombre

Descripcin

DataSource

Ubicacin de la base de datos

File Name

Ubicacin del fichero que contiene la cadena


de conexin

Provider

Driver para acceder a la base de datos

Objeto Command

Ejecutar una instruccin contra la base de


datos
Necesita

77

una conexin abierta vlida (Objeto Connection)


una sentencia SQl vlida (Propiedad
CommandText)
Definir correctamente el tipo (Propiedad
CommandType)

Creando el objeto
Command

Llamando al constructor y pasando como parmetro la


conexin
(conSQL definida previamente)
Dim commSQL as new SqlCliente.SqlCommand()
commSql.Connection=conSQL
commSql.CommandText=Select count(*) from galeria
commSQl.CommandType=CommandType.Text

Utilizando el mtodo CreateCommand del objeto


conexin
(cn definida previamente)
Dim cmd as dbcommand = cn.CreateCommand
cmd.CommandText=Select count(*) from galeria
cmd.CommandType=CommandType.Text

78

Ejecutando el objeto
Command

Solo se puede ejecutar con una conexin abierta


ExecuteReader cuando devuelve informacin en un
objeto SqlDataReader o OleDbDataReader
ExecuteScalar cuando la consulta devuelve un nico
valor (la primera columna de la primera fila)
ExecuteNonQuery, cuando no devuelve registros solo el
nmero de filas afectadas
ExecuteXMLReader,solo vlido para SqlCommand, en la
instruccin contiene la clausula For XML
messageBox.Show(commSql.ExecuteScalar().tostring)

79

Objeto DataReader

80

Conjunto de datos de solo lectura


Eficiente porqu solo contiene un registro en
memoria
Instancia mediante el mtodo ExecuteReder
Se puede acceder a la informacin mediante el
nombre de la columna o la posicin
Mtodo Close, para liberar el DataReader
Usar mtodos de tipo de datos para obtener el
dato en el formato deseado (Ej: getString)
NextResult, en el caso de que se devuelvan varios
conjuntos de resultados

DataTable

Es una tabla que contiene informacin en


memoria
Contiene objetos DataColumns y DataRows
Ejemplo
Definir la tabla
Dim tbLibro as new Datatable(libro)
Definir la columna
Dim titulo as new DataColumn(titulo)
Establecer Propiedades
Titulo.datatype=getType(string)
Titulo.MaxLength=50
Aadir la columna
Tblibro.Columns.Add(titulo)

81

Data View

Permite filtrar y ordenar datos de un dataTable


Un DataTable puede tener varios DataView
Contiene propiedades AllowDelete, AllowEdit, AllowNew
Ejemplo de ordenacin y filtro
(suponiendo una tabla de nombre empleado y un control
gridView de nombre gv)
Dim vista as New DataView(empleado)
Vista.sort=LastName ASC
Vista.RowFilter=LastName like A%
Gv.DataSource=view
Gv.DataBind

82

6 ADO.NET Desconectado
DataAdapter
DataSet

83

DataAdapter
Sirve para intercambiar datos entre un origen de datos
y un DataSet
Crear una DataAdapter con un objeto Connection
existene
Dim conSql as new SqlClient.SqlConnection()
...
Dim commSql as new SqlCliente.SqlCommand()
...
Dim da as new sqlclient.SqlDataAdapter()
Da.selectCommand=commSql

84

DataAdapter II

Usar una conexin cerrada

Private conSql as sqlClient.SqlConnection


Private Sub Form1_Load(....
conSql=new SqlClient.SqlConnection
conSql.ConnectionString= ....
End Sub
Private Sub Button1_Click(....
dim da as new sqlClient.sqlDataAdapter ( Select * from foto,
conSql)
End Sub

85

Uso de DataAdapter

Fill Rellenar un objeto DataTable o DataSet


Se pueden rellenar varios objetos con el mismo
dataAdapter
Dim conSql as new SqlClient.SqlConnection()
...
Dim da as new sqlclient.SqlDataAdapter(select * from Foto,
conSql)
Dim ds as new DataSet()
Da.Fill(ds,Foto)
trabajar con la informacin de ds
Da.update(ds,Foto)

86

Objeto DataSet

System.Data
Cache desconectada de datos en memoria
Contiene

DataTable, tablas en memoria

Agregar nuevo elemento DataSet

Creacin en tiempo de ejecucin

87

DataRelations, relaciones entre tablas

Creacin en tiempo de diseo

Columns
Rows

Dim ds as new DataSet

Rellenando DataSet

Se accede a un origen de datos mediante un


DataAdapter y se rellena la informacin en un
dataTable dentro de un DataSet
Dim conSql as new SqlClient.SqlConnection()
...
Dim da as new sqlclient.SqlDataAdapter(select * from Foto,
conSql)
Dim ds as new DataSet()
Da.Fill(ds,Foto)
trabajar con la informacin de ds
Da.update(ds,Foto)

88

Creando DataSet

En tiempo de Diseo
En tiempo de ejecucin a partir de un dataAdapter
Un dataSet que contiene un DataTable personalizado

Dim ds as New DataSet


Dim dt as New DataTable(Conf)
Dt.Columns.Add(idAutor,System.type.getType(system.int32))
Dt.Columns.Add(nom,System.type.getType(system.string))
Ds.Tables.Add(dt)

89

Actualizar data en un DataSet

Aadir registros

Crear una nueva fila con el objeto DataRow


Rellenar las columnas con los datos
Aadir la fila a la tabla del data set mediante el
mtodo Add del DataTable

Dim dr as DataRow=ds.Tables(Titulos).NewRow
Dr(Titulo)=Nuevo libro
Dr(Tipo)=Negocios
Ds.Tables(Titulos).Rows.Add(dr)

90

Editar Registros

Llamar al mtodo BeginEdit


Modificar el valor de las columnas
Utilizar EndEdit, CancelEdit para aceptar o cancelar las
modificaciones

Dim dr as dataRow=ds.Tables(Titulos).Rows(0)
Dr.BeginEdit()
Dr(titulo)=dr(titulo).tostring & 1
Dr.EndEdit

91

Eliminar Datos

DataRows.Remove, elimina los datos definitivamente de


un DataSet
DataRow.Delete, lo marca para eliminar, pero llamando a
RejectChanges los desmarcar
Dim dr as dataRow=ds.Tables(Titulos).Rows(0)
ds.Tables(Titulos).rows.remove(dr)

92

Actualizar datos en el origen

Mtodo Update del objeto DataAdapter

DataSet que contiene los datos que se han modificado


Nombre de DataTable donde se han realizado los cambios.

Generacin de comandos de actualizacin de forma


automtica con CommandBuilder
InsertCommand, UpdateCommand, DeleteCommand
Dim sqlCommBuild as new sqlCommandBuilder(da)
Msgbox(sqlcommBuild.GetInsertCommand.CommandText)
Da.update(ds,Titulo)

93

Uso de GUID

Global Unique Identifier, identificador global nico


Evita claves primarias duplicadas
Ejemplo
Suponiendo la tabla empleado con los campos idempleado
(clave primaria), apellido y nombre
Empleado.rows.add(guid.newGuid(),Lopez,pablo)

94

7 Procedimientos Almacenados
Introduccin
DBParameter

95

Introduccin

Utiliza el objeto Command para ejecutar un


procedimiento
En SQL el nombre de los parmetros tienen
que coincidir con el nombre del procedimiento
almacenado
En OLEDB tiene que coincidir la posicin
Propiedad Text de Command tiene que
contener el nombre del procedimiento
Dim cm as OLEDB.OLDBCommand= cn.CreateCommand
cm.text=LibrosEditorial
cm.CommandType=CommandType.StoreProcedure

96

Objeto dbParameter

Propiedades

Direction, indica si el valor es solo de entrada, solo


de salida o de entrada/salida
IsNullable, si acepta nulos o no
dbType, tipo del parmetro
ParameterName, nombre del parmetro
Value, valor

Mtodos

97

ToString, muestra el valor de ParameterName

Definicin y uso

Creacin, utilizando el mtodo CreatePArameter


del objeto dbcommand

Definicin, asignar valores a las propiedades


paramname, value, dbtype

Dim p as dbparameter=cmd.createparameter

P.parametername=@libro
P.value=33
P.dbtype=SqlDbtype.int
P.dbtype=OleDbType.BigInt

Asignacin del parmetro al command

98

Mtodo Add cmd.parameter.add(p)


Mtodo AddWithValue cmd.parameter.addwithvalue(p,33)

8 Gestin de errores
Try..Catch..Finally
Throw

99

Try-Catch

Canalizar errores

Try...Catch...Finally

Cdigo a canalizar en caso de error


Finally se ejecuta siempre

Gestin de error en funcin del tipo de Exception

Evitar mensajes poco explicativos


Responder adecuadamente al error

Segn el error que genera poder programar una


respuesta distinta

Generar una excepcin con Throw


Throw New System.Exception(Error manual")

100

SQLException

Se genera cuando SQL devuelve un error


Contiene una instancia de SQLError

101

Errors Coleccin de errores


Errors.Count nmero de errores devueltos
Errors(i).Message mensaje de error i
Errors(i).LineNumber lnea del error i
Errors(i).Source Origen del error i
Errors(i).Procedure Procedimiento del error i