Trabajar con bases de datos desde ASP.NET

35,322 views
35,050 views

Published on

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

Published in: Technology
7 Comments
36 Likes
Statistics
Notes
No Downloads
Views
Total views
35,322
On SlideShare
0
From Embeds
0
Number of Embeds
613
Actions
Shares
0
Downloads
494
Comments
7
Likes
36
Embeds 0
No embeds

No notes for slide

Trabajar con bases de datos desde ASP.NET

  1. 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. 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. 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. 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. 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. 6. .NET FrameWork – Componentes  Commond Languaje Runtime (CLR)  . NET Framework library  ADO .NET  ASP .NET  Interfaz de usuario 6
  7. 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. 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. 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. 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. 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. 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. 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. 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. 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
  16. 16. 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
  17. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 31. Controles WEB de Servidor - Enriquecidos Control Función AdRotator Secuencia de imágenes, aleatorias o no Calendar Muestra un calendario 31
  32. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 49. 3 DataSource Conceptos Tipos de controles Data Set con Tipo 49
  50. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 61. 4 Controles de presentación de datos DataBinding Controles Enlazados 61
  62. 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. 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. 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. 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. 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 RowDataBounde.row.type=DataControlRowType.Footer 66
  67. 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. 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. 69. 5 ADO.NET Objeto Connection Objeto Command Objeto Reader Objeto DataAdapter Objeto DataSet Data Designers y Data Binding 69
  70. 70. Presentación - Estructura ADO.NET 70
  71. 71. Introducción  Objetos de acceso a datos conectados  Connection  Command  Objetos de acceso a datos desconecatados  DataAdapter  DataSet 71
  72. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  83. 83. 6 ADO.NET Desconectado DataAdapter DataSet 83
  84. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  95. 95. 7 Procedimientos Almacenados Introducción DBParameter 95
  96. 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. 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. 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. 99. 8 Gestión de errores Try..Catch..Finally Throw 99
  100. 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. 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

×