Trabajar con bases de datos desde ASP.NET
-
Upload
javier-roig -
Category
Technology
-
view
33.157 -
download
1
description
Transcript of 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]
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
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
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
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
.NET FrameWork – Componentes Commond Languaje Runtime (CLR) . NET Framework library ADO .NET ASP .NET Interfaz de usuario
6
Commond Language Runtime
Descripción Simplifica desarrollo por
un entorno robusto Soporta múltiples
lenguajes Proporciona un entorno
gestionado (Garbage collection, seguridad)
7
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
.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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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”>
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
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>
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
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
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
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
Controles WEB de Servidor - Enriquecidos
31
Control Función
AdRotator Secuencia de imágenes, aleatorias o no
Calendar Muestra un calendario
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
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
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
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
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
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
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
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
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')"
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”>
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
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
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
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
}
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..
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
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
3 DataSource
Conceptos
Tipos de controles
Data Set con Tipo
49
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
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
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
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
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
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
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
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
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
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
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
4 Controles de presentación de datos
DataBinding
Controles Enlazados
61
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.
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
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
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
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
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
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
5 ADO.NET
Objeto Connection
Objeto Command
Objeto Reader
Objeto DataAdapter
Objeto DataSet
Data Designers y Data Binding
69
Presentación - Estructura ADO.NET
70
Introducción Objetos de acceso a datos conectados
Connection Command
Objetos de acceso a datos desconecatados DataAdapter DataSet
71
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
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
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
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
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
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
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
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
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
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
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
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
existeneDim 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 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
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
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
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
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
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
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
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 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
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
7 Procedimientos Almacenados
Introducción
DBParameter
95
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
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
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
8 Gestión de errores
Try..Catch..Finally
Throw
99
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
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