Trabajar con bases de datos desde ASP.NET

101
ACCESO A BASES DE DATOS SQL CON ASP.NET Visual Studio .NET 2005 - ASP .NET - SQL 2005 Fechas: 26/10/09 – 12/11/09 Horario: De 15:50 a 19:15 horas Lunes -Jueves Profesor: Javier Roig Garro [email protected]

description

Presentación que va desde una introducción a ASP.NET hasta la explicación de técnicas y controles para trabajar con bases de datos SQL

Transcript of Trabajar con bases de datos desde ASP.NET

Page 1: Trabajar con bases de datos desde ASP.NET

ACCESO A BASES DE DATOS SQL CON ASP.NET

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

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

Profesor: Javier Roig [email protected]

Page 2: Trabajar con bases de datos desde ASP.NET

Temario

1. Introducción a Visual Studio.NET (1 sesión) Conceptos básicos. El entorno de trabajo. Carpetas de sistema y archivos de configuración.

Acceso a bases de datos desde VS.NET

2. Conceptos básicos (3 sesiones) Manipular controles y sus propiedades. Controles básicos, label, textbox y button. Controles

Lista, listbox, dropdownlist, chekboxlist. Eventos y PostBack

3. Familia de Controles de acceso a datos DataSource (1 sesión) SqlDataSource. Definición de la conexión a la base de datos

4. Controles de presentación de datos (3 sesiones) Controles plantilla, datalist. Controles tabla, Gridview, Detailsview, Formsview

5. Introducción ADO.NET(3 Sesiones) Conceptos básicos de la estructura system.data. Connection. Command. DataReader

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

7. Paso de parámetros y Procedimientos almacenados(1 Sesión) Definición de parámetros y su uso con el objeto command. Llamada a procedimientos

almacenados

8. Gestión de Errores (1 Sesión) Canalizar errores. Generar excepciones según el tipo de error

2

Page 3: Trabajar con bases de datos desde ASP.NET

1 Introducción a Visual Studio.NET

Conceptos básicos.

El entorno de trabajo.

Carpetas de sistema y archivos de configuración.

Acceso a bases de datos desde VS.NET

3

Page 4: Trabajar con bases de datos desde ASP.NET

Introducción Definición

Modelo de programación consistente para todas las plataformas

Interoperabilidad entre tecnologías Fácil migración Soporte HTML, XML, SOAP

4

Page 5: Trabajar con bases de datos desde ASP.NET

Elementos del núcleo de .NETa. .NET Framework. Conjunto común de servicios para

desarrollo de aplicaciones independientemente del lenguaje. No es necesario distribuir un runtime especifico

b. .NET Building Block Services. Servicios Webs distribuidos programables que pueden funcionar tanto en intranet como en internet

c. Visual Studio .NET. Entorno para simplificar desarrollo, depuración y mantenimiento de software

d. .NET Enterprise Services.Herramientas asociadas. SQL, Biztalk, Integration Host Services, Aplication Center, Iternet Security and Acceleration Server 2000, Commerce Server.

5

Page 6: Trabajar con bases de datos desde ASP.NET

.NET FrameWork – Componentes Commond Languaje Runtime (CLR) . NET Framework library ADO .NET ASP .NET Interfaz de usuario

6

Page 7: Trabajar con bases de datos desde ASP.NET

Commond Language Runtime

Descripción Simplifica desarrollo por

un entorno robusto Soporta múltiples

lenguajes Proporciona un entorno

gestionado (Garbage collection, seguridad)

7

Page 8: Trabajar con bases de datos desde ASP.NET

CLR – Componentes

Class Loader. Carga en memoria y prepara para su ejecución MSIL (Microsoft Intermediate Languaje). Convierte MSIL a código

nativo justa antes de ejecutar Code Manager. Gestiona la ejecución del código Garbage Collection. Controla el ciclo de vida de todos los objetos Security Engine. Permite tener seguridad por el origen del código

y por el usuario Debug Engine. Depurar y realizar trazas del código Type Checker. Evita uso incorrecto de variables no inicializadas Excepcion Manager. Estructura de manejo de excepciones. Thread Suport. Programación multihilo. Com Marshaled. Gestion de comunicación de objetos com .NET FrameWork Class Library Support.

8

Page 9: Trabajar con bases de datos desde ASP.NET

.NET FrameWork Librería de Clases Namespace.

Organización Lógica de tipos y clases base relacionadas. Un namespace puede agrupar otros namespaces

System. Contienen definición de las clases fundamentales Sytem.Collections. Ordenación de listas, agrupación 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

9

Page 10: Trabajar con bases de datos desde ASP.NET

ADO .NET Nueva generación de ActiveX Data Object Soporta programación desconectada Provee soporte para XML System.Data. Namespace que contiene la clase

DataSet System.XML Namespace que soporta XML según

la compilación W3C. System.XML.Xsl, soporta transformaciones. System.XML.Serializacion, contiene la base para los

Servicios Web

10

Page 11: Trabajar con bases de datos desde ASP.NET

Qué es ASP.NET Evolución más flexible de ASP Páginas Web Dinámicas 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

Page 12: Trabajar con bases de datos desde ASP.NET

Características del Entorno de Desarrollo

IDE (Integrated Development Evironment) Elementos de un proyecto Uso de las características del entorno Depuración de un proyecto Compilación en .NET

12

Page 13: Trabajar con bases de datos desde ASP.NET

IDE - Introducción

Solo un entorno para todas las herramientas de desarrollo

Una solución puede contener múltiples lenguajes

Una solución puede contener múltiples proyectos

Personalizar el entorno de trabajo Visor de Internet integrado Depuración de código

13

Page 14: Trabajar con bases de datos desde ASP.NET

IDE - Plantillas de Trabajo Aplicación Windows, Aplicación estándar Librería de Clases, a modo de dll de vb 6 Windows Control Library, Controles definidos por el usuario. ASP .NET Web Aplication, aplicación que se va a ejecutar en un

Internet Information Server. ASP. Web Services, aplicación que va a proveer de servicios

XML a aplicaciones clientes Web Control Library, Controles de usuario para aplicaciones

web. Aplicación de consola, se ejecuta en la línea de comandos Otras (Servicios Windows, proyectos vacíos..)

14

Page 15: Trabajar con bases de datos desde ASP.NET

Ficheros de un proyecto Fichero de la Solución (.sln, .suo)

.sln, Contiene la información de varios proyectos .sou, personalización del proyecto por el usuario

Fichero de proyecto (.vproj) Fichero XML que contiene referencias a todos los elementos del

proyecto. Según el lenguaje cambia el tipo (en c# son .csproj)

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

Diferentes elementos se pueden guardar en el mismo fichero. Servicios Web XML (.asmx) Formularios Web (.aspx)

El código se almacena en ficheros .vb Clases Web Globales (.asax) Web.config

Ensamblado (.dll) Bases de datos

SQL Express (.mdf) Access (.mdb)

15

Page 16: Trabajar con bases de datos desde ASP.NET

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

Page 17: Trabajar con bases de datos desde ASP.NET

Assemblies y Referencias Ensamblados (.dll , .exe y ficheros auxiliares) .Net FrameWork tiene ensamblado predefinidos Se crean automáticamente cuando se construye un

proyecto Referencias a elementos externos del proyecto.

.NET COM Proyectos

Menú Proyecto Agregar Referencia Botón derecho en el proyecto Agregar Referencia

17

Page 18: Trabajar con bases de datos desde ASP.NET

Conceptos Acceso a Datos

18

Modelo ASP 2.0 vs ASP 1.1 Nuevos controles

Más ligeros Más fáciles de utilizar Menos código para obtener los mismos resultados

DataBindig Enlazar controles a un origen de datos 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

Carpeta por defecto para establecer los orígenes de datos Puede contener Access (mdb), SQL Express (mdf), XMl

Page 19: Trabajar con bases de datos desde ASP.NET

Tipos de Controles

19

Tipos Específicos 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

Cadenas de conexión Genera automáticamente en función del origen de datos Muestra por defecto el contenido de App_Data Permite guardarlas en web.config

DataSource vs DataSourceid DataSourceId, indica el control de origen de datos, en cambio

Datasource indica el objeto de origen de datos

Page 20: Trabajar con bases de datos desde ASP.NET

Librerias Conjunto de clases que permite trabajar con bases de

datos mediante System.Data Acceso a múltiples tipos de bases de datos Uso de proveedores de datos como antes era DAO, ADO,

OLEDB Dos librerías con objetos parecidos

SQL .NET (SQLDataReader) -> Para SQL Server OLE DB .NET (OLEDBDataReader) -> Otros

Imports System.DataImports System.Data.SqlClientUsing System.DataUsing System.Data.SQLClient

20

Page 21: Trabajar con bases de datos desde ASP.NET

Proveedores de Acceso a Datos

Espacio de nombres◦ System.Data.SQLClient, acceder a SQL Server 7.0 o

posterior◦ System.Data.OLEDB, cualquier otro tipo de acceso a

datos Elementos

◦ 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 información viaja entre cliente y servidor

mediante XML

21

Page 22: Trabajar con bases de datos desde ASP.NET

2 Conceptos básicos

Manipular controles y sus propiedades

Controles básicos, label, textbox y button

Controles lista, listbox, dropsdownlist, checkboxlist

Eventos y Postback

22

Page 23: Trabajar con bases de datos desde ASP.NET

Tipos de controles servidor

23

HTML server controls Añadir runat=“server” para tratarlo en el modo

servidor Web server controls

Integrados, equivalentes a los controles HTML Validación, testar los datos introducidos Enriquecidos, funcionalidad avanzada Enlazados a datos Controles Web, presentación de datos en navegadores

Page 24: Trabajar con bases de datos desde ASP.NET

Controles de servidor HTML

24

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 rápidamente una página html

con nuevas funcionalidades<input type=“text” id=“textname” runat=“server”>

Page 25: Trabajar con bases de datos desde ASP.NET

Controles WEB de Servidor

25

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

Page 26: Trabajar con bases de datos desde ASP.NET

Guardar el estado. ViewState

26

Cada vez que se pide una página se construye la página y todos sus controles y se destruye después 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 sección <form ... Runat=“server”>

Contiene un string de pares nombre-valor, con los nombres de cada control y el último valor

Cada petición 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>

Page 27: Trabajar con bases de datos desde ASP.NET

Controles Comunes

27

Creación en tiempo de Diseño Desde la barra de herramientas de controles Creación del código HTML de forma directa

Posicionamiento Absoluto o relativo Herramientas Opciones Diseñador HTML Posición CSS

PostBack Hay controles que automáticamente 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

Page 28: Trabajar con bases de datos desde ASP.NET

Controles WEB de Servidor - Integrados

28

Control de servidor Equivalente HTML Función

<asp:button> <input type=submit> Crea un botón que envia una petición al servidor

<asp:checkbox> <input type=checkbox> Casilla de verificación

<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> Botón con imagen en vez de texto

<asp:LinkButton> No tiene Botón 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 selección múltiple

Page 29: Trabajar con bases de datos desde ASP.NET

Controles WEB de Servidor – Integrados

29

Control de servidor Equivalente HTML Función

<asp:panel> <div></div> Panel contenedor de controles

<asp:radiobutton> <input type=radiobutton>

Botón de radio

<asp:table> <table> </table> Crea una tabla

<asp:textbox> <input type=text> Cuadro de texto

<asp:literal> No tiene Texto

Page 30: Trabajar con bases de datos desde ASP.NET

Controles WEB de Servidor - Validación

30

Control Función

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

RegularExpressionValidator

Tiene que cumplir un patrón

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 validación para mostrarlos centralizados

Page 31: Trabajar con bases de datos desde ASP.NET

Controles WEB de Servidor - Enriquecidos

31

Control Función

AdRotator Secuencia de imágenes, aleatorias o no

Calendar Muestra un calendario

Page 32: Trabajar con bases de datos desde ASP.NET

Controles WEB de Servidor - Enlazados

32

Control Función

CheckBoxList Columna de valores en formato checkbox

Repeater Muestra información 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 información 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 opción

GridView Versión avanzada del Data grid

Page 33: Trabajar con bases de datos desde ASP.NET

Controles Comunes

33

Label, Muestra información que se puede modificar desde el código

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

TextBox Muestra y recoge información del usuario Propiedad text contiene el texto del textbox TextMode, Formato del cuadro de texto

SingleLine, Multiline, Password Columns, Rows, máximo ancho y largo del cuadro de texto MaxLength, número de caracteres máximo

Page 34: Trabajar con bases de datos desde ASP.NET

Controles Comunes II

34

Button Boton que genera un postback al servidor Tipo submit (por defecto), solo genera un postback al

servidor Tipo command, indicar el nombre de la acción en la

propiedad commandName. Se gestiona con el evento command

Propiedad CausesValidation, por defecto true, hace que se valide el formulario

CheckBox 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

Page 35: Trabajar con bases de datos desde ASP.NET

Controles Comunes III

35

RadioButton Seleccionar opciones de forma exclusiva en un

grupo GroupName, todos los que tengan el mismo valor

se validan juntos Text, contiene el título Checked, indica si está activo o no

Page 36: Trabajar con bases de datos desde ASP.NET

Controles Navegación

36

Web.SiteMap XML con la representación del sitio web

SiteMapPath Representa web.sitemap

SiteMapDataSource Enlaza con el XML y permite utilizarlo con otros controles StartingNodeOffset

TreeView Representación de un SiteMapDataSource Formado por TreeNode Permite colapsarse o expandirse

Menu Representación de un SiteMapDataSource Formado por MenuItem Permite programar eventos servidor o redirección a páginas

Page 37: Trabajar con bases de datos desde ASP.NET

Controles Enlazados

37

ListBox, lista de datos Utiliza la colección 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

Page 38: Trabajar con bases de datos desde ASP.NET

Controles Enlazados II

38

CheckBoxList Similar al listbox donde se puede hacer la selección

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 opción

Page 39: Trabajar con bases de datos desde ASP.NET

Eventos – Qué son eventos

39

Acción que responde a una actuación del usuario con un control de la página

Tipo de evento por área de ejecución Eventos de servidor Eventos de cliente

Ejemplo de evento Pulsar un botón Submit

Page 40: Trabajar con bases de datos desde ASP.NET

Eventos Cliente

40

Se ejecuta en el equipo cliente, no se envía información 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')"

Page 41: Trabajar con bases de datos desde ASP.NET

Eventos Servidor

41

Se ejecuta en el equipo servidor, la petición se envía al servidor para su proceso

Los procedimientos de evento es código compilado que está en el servidor

Sirve para controles HTML y Web Soporta un número menor de eventos, por la demora del

envío de la información Algunos OnChange NO soporta MouseKeys

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

Page 42: Trabajar con bases de datos desde ASP.NET

Creación de Eventos

42

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 botón eventos en las propiedades del

control Argumentos

El objeto que envía el evento (sender) Una instancia del evento (e)

Tipo EventArgs, sin informacion adicional Imágenes ImageClickEventArgs, información de

coordenadas Utilizar Ctype para convertir sender

Page 43: Trabajar con bases de datos desde ASP.NET

Creación de Eventos

43

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

AddHandler AddressOf

Page 44: Trabajar con bases de datos desde ASP.NET

Eventos de página

44

Orden de generación 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 envía al servidor (Change)

PostBack, envío de información al servidor Se puede forzar si el control tiene la propiedad

AutoPostBack=true

Page 45: Trabajar con bases de datos desde ASP.NET

Trabajar con eventos PostBack

45

El evento Page_Load se ejecuta cada llamada Propiedad page.isPostBack, determina si ya se

ha enviado al servidorIf not Page.IsPostBack then

‘ Ejecuta solo la primera vez

End If

If (!Page.IsPostBack)

{

//ejecuta la primera carga

}

Page 46: Trabajar con bases de datos desde ASP.NET

Trabajar con controles comunes

46

Acceso a los controles de una página web Objeto Me Colección de controles

Escribir información Asignar la información según el tipo

control.propiedad=valor

Leer información Almacenar la información en una variable Utilización en una función

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

Page 47: Trabajar con bases de datos desde ASP.NET

Trabajar con Listas

47

Colecciones de elementos Propiedad items

Escribir información Método ADD de la propiedad items Asignar a un origen de datos

Leer información Elemento Seleccionado Recorrer la colección items

Page 48: Trabajar con bases de datos desde ASP.NET

Trabajar con Controles de Navegación

48

Crear menús en tiempo de ejecución Crear el nodo o el elemento Añadir el nodo al menú o al árbol Propiedad Items y ChildItems en los menús Propiedad Nodes en losTreeview

Leer información Recorrer el menú/árbol mediante los nodos

Responder al Evento Propiedades SelectedNode, SelectedMenuItem

Page 49: Trabajar con bases de datos desde ASP.NET

3 DataSource

Conceptos

Tipos de controles

Data Set con Tipo

49

Page 50: Trabajar con bases de datos desde ASP.NET

Controles Origen de Datos

50

SqlDataSource Enlaza con un origen de datos SQL (no solo SQL Server) Especificar base de datos, consulta/ tabla, filtros,

ordenacion AcessDataSource

Enlaza con bases de datos Access Igual que el anterior pero más limitado

ObjectDataSource Enlaza con objetos de negocio definidos en una clase Seleccionar el objeto y los métodos a utilizar

XmlDataSource Enlaza con un origen de datos XML Especificar archivo, el archivo de transformación (si es

necesario) y xPath para indicar el tipo de nodo a mostrar SiteMapDataSource

Enlaza con web.sitemp para crear la estructura de navegación del sitio

Page 51: Trabajar con bases de datos desde ASP.NET

SQLDataSource Enlaza controles web con bases de datos SQL Cadena de conexión

Utiliza una cadena de conexión diferente en función 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 parámetros Databind ejecuta el comando select Algunos controles (Gridview) los llaman automáticamente

Puede devolver un DataSet o un dataReader Permite cachear la información Se puede ordenar la información que devuelve

51

Page 52: Trabajar con bases de datos desde ASP.NET

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 parámetros Databind ejecuta el comando select Algunos controles (Gridview) los llaman automáticamente

Se puede ordenar la información que devuelve

52

Page 53: Trabajar con bases de datos desde ASP.NET

ObjectDataSource Enlaza controles web con objetos de la capa de negocio Se utilizan en arquitecturas de tres capas Comandos se enlazan con métodos

SelectCommand, UpdateCommand, DeleteCommand, InsertCommand Databind ejecuta el comando select Algunos controles (Gridview) los llaman automáticamente

Se puede cachear, pero no es recomendable para datareader Se puede ordenar la información que devuelve

53

Page 54: Trabajar con bases de datos desde ASP.NET

XmlDataSource Enlaza controles web con archivos XML Se especifica en la propiedad DataField Se utiliza para leer información aunque se puede modificar con

restricciones con el método SAVE No tiene control de concurrencia Tiene que existir previamente el archivo

Permite cachear la información NO Se puede ordenar la información que devuelve Se pude filtrar con XPath

54

Page 55: Trabajar con bases de datos desde ASP.NET

SiteMapDataSource Enlaza controles de navegación con el archivo del mapa del sitio Nodo inicial, identifica a partir de donde se muestra la información StartingNodeOffset, número de nodos que tiene que mostrar con

respecto a la página actual

55

Page 56: Trabajar con bases de datos desde ASP.NET

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 conexión y

métodos Creación

Agregar nuevo elemento data set Asistente Cadena de Conexión Definición de esquema Método para llenarlo Métodos para actualizarlo

UtilizaciónDim taAutor as new BibliotecaTableAdapters.AutorTableAdapter

Girdview1.datasource=taAutor.GetAutor

56

Page 57: Trabajar con bases de datos desde ASP.NET

DataSet con tipo - Parámetros Creación

Indicar parámetro con nombre @parametro Añadir los métodos de llenado y de generación del dataSet Verificación de los parámetros en tiempo de diseño

Utilización Igual que en el caso de métodos que no tiene parámetros

57

Page 58: Trabajar con bases de datos desde ASP.NET

DataSet con Tipo – Modificar Datos Creación de métodos directos

Modificar la información directamente en la base de datos Se pasan como parámetros los valores Uso de Scope_identity Identificar uso de Scalar

Actualización por Lotes Utilizar las propiedades de TableAdapter Se generan automáticamente desde el asistente

Definición de las sentencias entre varias tablas El generador de consultas no sabe trabajar con Join Podemos utilizar subconsultas

58

Page 59: Trabajar con bases de datos desde ASP.NET

Espacio de nombres System.ComponetModel

59

Necesario para crear clases que definan el comportamiento de componentes y controles

System.ComponentModel.DataObject. Enlaza con ObjectDataSource

DataObjectMethodAttribute. Identifica el tipo de operación

DataObjectMethodType Enumeración de tipos de métodos existentes

<System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, True)> _

Public Function GetListaAutor() As Biblioteca.AutorDataTable

Return AutorAdapter.GetAutor

End Function

Page 60: Trabajar con bases de datos desde ASP.NET

DataSet con Procedimientos Almacenados

60

Crear una consulta dentro del TableAdapter Utilizar procedimientos existentes

Seleccionar el procedimiento existente Determinar los datos que devuelve

Crear Procedimientos automáticos Crear a la vez que el table adapter Seleccionar el tipo de operación Genera el código en la base de datos

Page 61: Trabajar con bases de datos desde ASP.NET

4 Controles de presentación de datos

DataBinding

Controles Enlazados

61

Page 62: Trabajar con bases de datos desde ASP.NET

DataBinding

62

Enlazar controles a un origen de datos 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 múltiples 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 través de la propiedad DataSource.

Page 63: Trabajar con bases de datos desde ASP.NET

Enlazar controles simples

Eval Enlazar una propiedad con un campo de la base

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

Bind. Enlazar una propiedad con un campo Permite modificar el campo Control.propiedad=<%# Bind(“nombre”) %>

DataFormatString {0,formato}

Utilizar la etiqueta inteligente63

Page 64: Trabajar con bases de datos desde ASP.NET

Repeater

64

Utiliza formatos de Plantilla Muestra información de cada registro del origen de

datos en una fila Hay que especificar los campos que se quieren mostrar

desde la ventana de código Se traduce en el navegador como una tabla Evento ItemDataBound Plantillas

HeaderTemplate ItemTemplate AlternatingItemTemplate SeparatorTemplate FooterTemplate

Paginación mediante programación Utilizar botones y canalizar con el evento

ItemCommand y la propiedad CommandName

Page 65: Trabajar con bases de datos desde ASP.NET

DataList Muestra la información de cada registro del origen de

datos en una fila del control Permite indicar que campos queremos mostrar mediante

plantillas Es la versión avanzada de Repeater Evento ItemDataBound, itemCreated, itemDataBound Enlazar los campos con Eval o Bind Plantillas

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

65

Page 66: Trabajar con bases de datos desde ASP.NET

GridView

66

Muestra información en formato tabla Esta formado por una colección de GridViewRow (Filas)

y DatacontrolField (Columnas) que dan lugar a DataControlFieldCell (Celdas)

Cada Fila contiene una colección 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 información en el píe del controlActivarlo por columna ShowFooter=trueutilizar en el evento RowDataBounde.row.type=DataControlRowType.Footer

Page 67: Trabajar con bases de datos desde ASP.NET

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

Agregar columnas de Plantilla Utilizar funciones dentro del código ASPX

67

Page 68: Trabajar con bases de datos desde ASP.NET

FormsView Similar a Details View, pero con más funcionalidad Permite la edición de plantillas para los distintos

modos, selección, edición e inserción Acceso a los controles desde el código con Findcontrol Plantillas

ItemTemplate HeaderTemplate FooterTemplate EmptyDataTemplate PagerTemplate EditItemTemplate/IsertItemTemplate

68

Page 69: Trabajar con bases de datos desde ASP.NET

5 ADO.NET

Objeto Connection

Objeto Command

Objeto Reader

Objeto DataAdapter

Objeto DataSet

Data Designers y Data Binding

69

Page 70: Trabajar con bases de datos desde ASP.NET

Presentación - Estructura ADO.NET

70

Page 71: Trabajar con bases de datos desde ASP.NET

Introducción Objetos de acceso a datos conectados

Connection Command

Objetos de acceso a datos desconecatados DataAdapter DataSet

71

Page 72: Trabajar con bases de datos desde ASP.NET

Objeto Connection 1 Establecer el tipo de conexión

SQLConnection, bases de datos SQL OleDbConnection, Access y SQL antigüos ODBCConnection, Otro tipo de base de datos

2 Especificar el origen de datos ConnectionString, información sobre el origen de datos Varia un poco de SQL, OLEDB y ODBC

3 Conectar con el origen de datos Método OPEN, antes de poder trabajar con la base de datos Método Close, al finalizar los trabajos con la base de datos

72

Page 73: Trabajar con bases de datos desde ASP.NET

Objeto Connection

Propiedad ConnectionString, parámetros para establecer la conexión con la base de datos

Guardar la cadena en web.config Facilita los cambios de ubicación de la base de datos<configuration>

<connectionStrings><add name=“BaseDatos”….

</connectionStrings><configuration>

Obtener desde el código la cadena de conexiónDim cadena as stringcadena=ConfigurationManager.ConnectionStrings(“Base

Datos”).tostring

73

Page 74: Trabajar con bases de datos desde ASP.NET

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

Page 75: Trabajar con bases de datos desde ASP.NET

SqlClient ConnectionString

Nombre Descripción Por Defecto

Connect TimeoutTiempo antes de que de error 15 seg

Initial CatalogNombre de la base de datos

User IdCuenta de Sql para iniciar

Psw Contraseña de Sql

Data Source Nombre del servidor

Trusted Connection

Conexión integrada de Windows False

75

Page 76: Trabajar con bases de datos desde ASP.NET

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

Nombre Descripción

DataSource Ubicación de la base de datos

File Name Ubicación del fichero que contiene la cadena de conexión

Provider Driver para acceder a la base de datos

76

Page 77: Trabajar con bases de datos desde ASP.NET

Objeto Command Ejecutar una instrucción contra la base de

datos Necesita

una conexión abierta válida (Objeto Connection) una sentencia SQl válida (Propiedad

CommandText) Definir correctamente el tipo (Propiedad

CommandType)

77

Page 78: Trabajar con bases de datos desde ASP.NET

Creando el objeto Command Llamando al constructor y pasando como parámetro la

conexión(conSQL definida previamente)Dim commSQL as new SqlCliente.SqlCommand()commSql.Connection=conSQLcommSql.CommandText=“Select count(*) from galeria”commSQl.CommandType=CommandType.Text

Utilizando el método CreateCommand del objeto conexión (cn definida previamente)Dim cmd as dbcommand = cn.CreateCommandcmd.CommandText=“Select count(*) from galeria”cmd.CommandType=CommandType.Text

78

Page 79: Trabajar con bases de datos desde ASP.NET

Ejecutando el objeto Command Solo se puede ejecutar con una conexión abierta ExecuteReader cuando devuelve información 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

número de filas afectadas ExecuteXMLReader,solo válido para SqlCommand, en la

instrucción contiene la clausula For XMLmessageBox.Show(commSql.ExecuteScalar().tostring)

79

Page 80: Trabajar con bases de datos desde ASP.NET

Objeto DataReader

Conjunto de datos de solo lectura Eficiente porqué solo contiene un registro en

memoria Instancia mediante el método ExecuteReder Se puede acceder a la información mediante el

nombre de la columna o la posición Método Close, para liberar el DataReader Usar métodos 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

80

Page 81: Trabajar con bases de datos desde ASP.NET

DataTable Es una tabla que contiene información en

memoria Contiene objetos DataColumns y DataRows Ejemplo

Definir la tablaDim tbLibro as new Datatable(“libro”)

Definir la columnaDim titulo as new DataColumn(“titulo”)

Establecer PropiedadesTitulo.datatype=getType(“string”)Titulo.MaxLength=50

Añadir la columnaTblibro.Columns.Add(titulo)

81

Page 82: Trabajar con bases de datos desde ASP.NET

Data View Permite filtrar y ordenar datos de un dataTable Un DataTable puede tener varios DataView Contiene propiedades AllowDelete, AllowEdit, AllowNew Ejemplo de ordenación 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=viewGv.DataBind

82

Page 83: Trabajar con bases de datos desde ASP.NET

6 ADO.NET Desconectado

DataAdapter

DataSet

83

Page 84: Trabajar con bases de datos desde ASP.NET

DataAdapter Sirve para intercambiar datos entre un origen de datos

y un DataSet Crear una DataAdapter con un objeto Connection

existeneDim conSql as new SqlClient.SqlConnection()...Dim commSql as new SqlCliente.SqlCommand()...Dim da as new sqlclient.SqlDataAdapter()Da.selectCommand=commSql

84

Page 85: Trabajar con bases de datos desde ASP.NET

DataAdapter II Usar una conexión cerradaPrivate 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

Page 86: Trabajar con bases de datos desde ASP.NET

Uso de DataAdapter Fill Rellenar un objeto DataTable o DataSet Se pueden rellenar varios objetos con el mismo

dataAdapterDim 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 información de ds

Da.update(ds,”Foto”)

86

Page 87: Trabajar con bases de datos desde ASP.NET

Objeto DataSet

System.Data Cache desconectada de datos en memoria Contiene

DataTable, tablas en memoria Columns Rows

DataRelations, relaciones entre tablas Creación en tiempo de diseño

Agregar nuevo elemento DataSet Creación en tiempo de ejecución

Dim ds as new DataSet

87

Page 88: Trabajar con bases de datos desde ASP.NET

Rellenando DataSet Se accede a un origen de datos mediante un

DataAdapter y se rellena la información 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 información de ds

Da.update(ds,”Foto”)

88

Page 89: Trabajar con bases de datos desde ASP.NET

Creando DataSet En tiempo de Diseño En tiempo de ejecución a partir de un dataAdapter Un dataSet que contiene un DataTable personalizadoDim 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

Page 90: Trabajar con bases de datos desde ASP.NET

Actualizar data en un DataSet Añadir registros

Crear una nueva fila con el objeto DataRow Rellenar las columnas con los datos Añadir la fila a la tabla del data set mediante el

método Add del DataTableDim dr as DataRow=ds.Tables(“Titulos”).NewRow

Dr(“Titulo”)=“Nuevo libro”

Dr(“Tipo”)=“Negocios”

Ds.Tables(“Titulos).Rows.Add(dr)

90

Page 91: Trabajar con bases de datos desde ASP.NET

Editar Registros Llamar al método BeginEdit Modificar el valor de las columnas Utilizar EndEdit, CancelEdit para aceptar o cancelar las

modificacionesDim dr as dataRow=ds.Tables(“Titulos”).Rows(0)

Dr.BeginEdit()

Dr(“titulo”)=dr(“titulo”).tostring & “1”

Dr.EndEdit

91

Page 92: Trabajar con bases de datos desde ASP.NET

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

Page 93: Trabajar con bases de datos desde ASP.NET

Actualizar datos en el origen Método Update del objeto DataAdapter

DataSet que contiene los datos que se han modificado Nombre de DataTable donde se han realizado los cambios.

Generación de comandos de actualización de forma automática con CommandBuilder InsertCommand, UpdateCommand, DeleteCommand

Dim sqlCommBuild as new sqlCommandBuilder(da)

Msgbox(sqlcommBuild.GetInsertCommand.CommandText)

Da.update(ds,”Titulo”)

93

Page 94: Trabajar con bases de datos desde ASP.NET

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 nombreEmpleado.rows.add(guid.newGuid(),”Lopez”,”pablo”)

94

Page 95: Trabajar con bases de datos desde ASP.NET

7 Procedimientos Almacenados

Introducción

DBParameter

95

Page 96: Trabajar con bases de datos desde ASP.NET

Introducción Utiliza el objeto Command para ejecutar un

procedimiento En SQL el nombre de los parámetros tienen

que coincidir con el nombre del procedimiento almacenado

En OLEDB tiene que coincidir la posición Propiedad Text de Command tiene que

contener el nombre del procedimientoDim cm as OLEDB.OLDBCommand= cn.CreateCommandcm.text=“LibrosEditorial”cm.CommandType=CommandType.StoreProcedure

96

Page 97: Trabajar con bases de datos desde ASP.NET

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 parámetro ParameterName, nombre del parámetro Value, valor

Métodos ToString, muestra el valor de ParameterName

97

Page 98: Trabajar con bases de datos desde ASP.NET

Definición y uso Creación, utilizando el método CreatePArameter

del objeto dbcommand Dim p as dbparameter=cmd.createparameter

Definición, asignar valores a las propiedades paramname, value, dbtype P.parametername=“@libro” P.value=33 P.dbtype=SqlDbtype.int P.dbtype=OleDbType.BigInt

Asignación del parámetro al command Método Add cmd.parameter.add(p) Método AddWithValue cmd.parameter.addwithvalue(p,33)

98

Page 99: Trabajar con bases de datos desde ASP.NET

8 Gestión de errores

Try..Catch..Finally

Throw

99

Page 100: Trabajar con bases de datos desde ASP.NET

Try-Catch Canalizar errores

Evitar mensajes poco explicativos Responder adecuadamente al error

Try...Catch...Finally Código a canalizar en caso de error Finally se ejecuta siempre

Gestión de error en función del tipo de Exception Según el error que genera poder programar una

respuesta distinta Generar una excepción con Throw

Throw New System.Exception(“Error manual")

100

Page 101: Trabajar con bases de datos desde ASP.NET

SQLException

Se genera cuando SQL devuelve un error Contiene una instancia de SQLError

Errors Colección de errores Errors.Count número de errores devueltos Errors(i).Message mensaje de error i Errors(i).LineNumber línea del error i Errors(i).Source Origen del error i Errors(i).Procedure Procedimiento del error i

101