• Like
Trabajar con bases de datos desde ASP.NET
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Trabajar con bases de datos desde ASP.NET

  • 31,724 views
Published

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

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
31,724
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
296
Comments
7
Likes
34

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 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. 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 RowDataBounde.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
  • 70. Presentación - Estructura ADO.NET 70
  • 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
  • 83. 6 ADO.NET Desconectado DataAdapter DataSet 83
  • 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
  • 95. 7 Procedimientos Almacenados Introducción DBParameter 95
  • 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