La Electricidad Y La Electrónica Trabajo Tecnología.pdf
Trabajar con bases de datos desde ASP.NET
1. Fechas: 26/10/09 – 12/11/09
Horario: 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
2. 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
3. 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
4. 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
5. Elementos del núcleo de .NET
a. .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
6. .NET FrameWork – Componentes
Commond Languaje Runtime (CLR)
. NET Framework library
ADO .NET
ASP .NET
Interfaz de usuario
6
7. Commond Language Runtime
Descripción
Simplifica desarrollo por un
entorno robusto
Soporta múltiples lenguajes
Proporciona un entorno
gestionado (Garbage
collection, seguridad)
7
8. 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
9. .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
10. 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
11. 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
12. 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
13. 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
14. 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
15. 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
17. 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
18. Conceptos Acceso a Datos
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
18
19. Tipos de Controles
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
19
20. 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.Data
Imports System.Data.SqlClient
Using System.Data
Using System.Data.SQLClient
20
21. 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
22. 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
23. Tipos de controles servidor
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
23
24. 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 rápidamente una página html con
nuevas funcionalidades
<input type=“text” id=“textname” runat=“server”>
24
25. 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
26. Guardar el estado. ViewState
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>
26
27. Controles Comunes
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
27
28. Controles WEB de Servidor - Integrados
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 Lista de elementos de selección
size=“5”></select> múltiple
28
29. Controles WEB de Servidor – Integrados
Control de servidor Equivalente HTML Función
<asp:panel> <div></div> Panel contenedor de controles
<asp:radiobutton> <input Botón de radio
type=radiobutton>
<asp:table> <table> </table> Crea una tabla
<asp:textbox> <input type=text> Cuadro de texto
<asp:literal> No tiene Texto
29
30. Controles WEB de Servidor - Validación
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
RegularExpressionValidat Tiene que cumplir un patrón
or
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
30
31. Controles WEB de Servidor - Enriquecidos
Control Función
AdRotator Secuencia de imágenes, aleatorias o no
Calendar Muestra un calendario
31
32. Controles WEB de Servidor - Enlazados
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
32
33. Controles Comunes
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
33
34. Controles Comunes II
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
34
35. Controles Comunes III
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
35
36. Controles Navegación
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
36
37. Controles Enlazados
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
37
38. Controles Enlazados II
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
38
39. Eventos – Qué son eventos
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
39
40. Eventos Cliente
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')"
40
41. Eventos Servidor
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”>
41
42. Creación 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 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
42
43. Creación 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
AddHandler
AddressOf
43
44. Eventos de página
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
44
45. 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
46. Trabajar con controles comunes
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..
46
47. Trabajar con Listas
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
47
48. Trabajar con Controles de Navegación
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
48
49. 3 DataSource
Conceptos
Tipos de controles
Data Set con Tipo
49
50. Controles Origen de Datos
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
50
51. 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
52. 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
53. 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
54. 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
55. 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
56. 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ón
Dim taAutor as new BibliotecaTableAdapters.AutorTableAdapter
Girdview1.datasource=taAutor.GetAutor
56
57. 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
58. 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
59. Espacio de nombres System.ComponetModel
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.Compone
ntModel.DataObjectMethodType.Select, True)> _
Public Function GetListaAutor() As Biblioteca.AutorDataTable
Return AutorAdapter.GetAutor
End Function
59
60. DataSet con Procedimientos Almacenados
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
60
61. 4 Controles de presentación de
datos
DataBinding
Controles Enlazados
61
62. DataBinding
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.
62
63. 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 inteligente
63
64. Repeater
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
64
65. 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
66. GridView
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 control
Activarlo por columna ShowFooter=true
utilizar en el evento
RowDataBounde.row.type=DataControlRowType.Footer
66
67. 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
68. 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
69. 5 ADO.NET
Objeto Connection
Objeto Command
Objeto Reader
Objeto DataAdapter
Objeto DataSet
Data Designers y Data Binding
69
71. Introducción
Objetos de acceso a datos conectados
Connection
Command
Objetos de acceso a datos desconecatados
DataAdapter
DataSet
71
72. 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
73. 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ón
Dim cadena as string
cadena=ConfigurationManager.ConnectionStrings(“BaseDatos”
).tostring
73
74. 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
75. SqlClient ConnectionString
Nombre Descripción Por Defecto
Tiempo antes de que
Connect Timeout 15 seg
de error
Nombre de la base de
Initial Catalog
datos
Cuenta de Sql para
User Id
iniciar
Psw Contraseña de Sql
Data Source Nombre del servidor
Trusted Conexión integrada de
False
Connection Windows
75
76. 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
Ubicación del fichero que contiene la cadena
File Name
de conexión
Provider Driver para acceder a la base de datos
76
77. 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
78. 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=conSQL
commSql.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.CreateCommand
cmd.CommandText=“Select count(*) from galeria”
cmd.CommandType=CommandType.Text
78
79. 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 XML
messageBox.Show(commSql.ExecuteScalar().tostring)
79
80. 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
81. DataTable
Es una tabla que contiene información 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
Añadir la columna
Tblibro.Columns.Add(titulo)
81
82. 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=view
Gv.DataBind
82
84. 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
85. DataAdapter II
Usar una conexión 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
86. 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 información de ds
Da.update(ds,”Foto”)
86
87. 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
88. 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
89. Creando DataSet
En tiempo de Diseño
En tiempo de ejecución 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
90. 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 DataTable
Dim dr as DataRow=ds.Tables(“Titulos”).NewRow
Dr(“Titulo”)=“Nuevo libro”
Dr(“Tipo”)=“Negocios”
Ds.Tables(“Titulos).Rows.Add(dr)
90
91. Editar Registros
Llamar al método 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
92. 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
93. 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
94. 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
96. 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 procedimiento
Dim cm as OLEDB.OLDBCommand= cn.CreateCommand
cm.text=“LibrosEditorial”
cm.CommandType=CommandType.StoreProcedure
96
97. 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
98. 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
99. 8 Gestión de errores
Try..Catch..Finally
Throw
99
100. 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
101. 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