ASP Active Server Pages Oscar Cubo Medina <ocubo@fi.upm.es> Santiago González Tortosa <sgonzalez@fi.upm.es> Victor Robles Forcada <vrobles@fi.upm.es> Programación Web en Servidor INEM – 2007
Contenidos Introducción Modelo de Objetos Lenguaje ASP Estáticas VS Dinámicas Arquitectura de Aplicaciones CGI Lenguaje ASP Funcionamiento Requisitos Ventajas e Inconvenientes Configuración Programación con VBScript Constantes y Variables Operadores Estructuras de Control Bucles Funciones y Procedimientos Modelo de Objetos Application, Session, Request, Response, … Acceso a Ficheros Objeto FileSystemObject Operaciones sobre Ficheros Acceso a Bases de Datos Introducción a BBDD Objetos para Acceso a BBDD Referencias
Introducción ASP
Introducción Paginas Estáticas VS Páginas Dinámicas Arquitectura de Aplicaciones Modelo 3 capas Cliente VS Servidor Scripts y CGI
GET “www.fi.upm.es/logo.gif” Páginas estáticas Servidor Web de www.fi.upm.es GET “www.fi.upm.es” http://www.fi.upm.es Index.html <HTML> … <IMG src=“logo.gif”> </HTML> GET “www.fi.upm.es/logo.gif” Logo.gif
Páginas dinámicas + BD Servidor Web de www.fi.upm.es Lógica de negocio http://search.unisys.com/search/default.asp?section=allsections&q1=http&Submit=Go GET “…&Submit=Go” BD Sdfgdfg dfg Dsf gsdfg sdfg Dsfg dsfg sdfg Dfg + Plantillas Lógica de negocio Respuesta dinámica
Arquitectura de Aplicaciones Lógica de negocio Interfaz de usuario Datos Servicios de usuario Servicios de trabajo Servicios de datos
Modelo de 3 capas Navegador Presentación Servidor Web Lógica de negocio Acceso a datos
Aplicaciones Web Cliente Browser HTTP DBMS Lógica de negocio DBMS Servidor Web Lógica de negocio DBMS Servicios Soportados Cliente No Browser Máquina Servidora Protocolo de objetos Aplicaciones existentes
El mundo del Cliente HTML / DHTML / CSS Lenguajes de script: JavaScript / VBScript Applet Java / Active X
El mundo del Servidor HTML / DHTML / XML ASP / JSP / PHP CGI VBScript / JavaScript Servlets / Scriptlets COM / DCOM / COM+ / EJB ODBC / JDBC / OLE DB / ADO
Lenguajes de script en cliente: JavaScript y VBScript VBScript sólo para Internet Explorer JavaScript ampliamente utilizado Cada navegador tiene sus propias extensiones Muy usados para realización de cálculos y validación de formularios
CGI Common Gateway Interface Se pueden desarrollar con cualquier lenguaje Por aspectos de seguridad se almacenan en directorios específicos del servidor
CGI Ventajas Inconvenientes Cualquier lenguaje de programación Altamente extendidos Todas las plataformas Inconvenientes Ojo con el uso de ejecutables en servidor Van lentos en IIS
Lenguaje ASP ASP
ASP ¿Qué es? Funcionamiento Requisitos Ventajas e Inconvenientes Configuración del Sistema
ASP ¿Qué es? Generación de páginas dinámicas Servidor Windows Active Server Pages – Paginas Activas en Servidor Es un lenguaje de programación Generación de páginas dinámicas Servidor Windows Anexo a IIS (Internet Information Server)
Funcionamiento IIS Browser 1) Petición de URL a través de HTTP <HTML> <TITLE>Ejemplo</TITLE> <BODY> <H1>Un ejemplo de ASP</H1> <% response.write "<HR>" response.write "Hola!" response.write "<HR>” %> </BODY> </HTML> 2) El servidor Web lee HTML y ejecuta script 4) El Browser muestra el HTML 3) HTML resultante es enviado al browser a través de HTTP <HTML> <TITLE>Ejemplo</TITLE> <BODY> <H1>Un ejemplo de ASP</H1> <HR> Hola! </BODY> </HTML> ejemplo.asp
Ejemplo de ASP <% For i=3 to 7 %> <FONT SIZE="<% =i %>">Hola Mundo</FONT><BR> <% Next %> <FONT SIZE="3">Hola Mundo</FONT><BR> <FONT SIZE="4">Hola Mundo</FONT><BR> <FONT SIZE="5">Hola Mundo</FONT><BR> <FONT SIZE="6">Hola Mundo</FONT><BR> <FONT SIZE="7">Hola Mundo</FONT><BR> Ejecución del código
Requisitos para ejecutar ASP Servidor Web: IIS (Internet Information Server) PWS (Personal Web Server) Drivers ODBC de acceso a Bases de Datos Editor de Texto
¿Por qué páginas ASP? Ventajas Inconvenientes Independientes del navegador Fácil de crear y usar Diferentes lenguajes de script válidos No más gastos en Software Inconvenientes Muy ligado a Microsoft Mala depuración Muchísimos WebSites están hechos con ASP
Configuración del sistema ¿Dónde se ponen las páginas ASP? Directorio c:\inetpub\wwwroot Configuración del directorio El usuario es IUSR_nombremaqina Necesita acceso de Lectura/Ejecución En caso de Base de Datos, también necesita acceso de Escritura Ejercicio 1: poner nuestro entorno en producción.
Programación con VBScript ASP
Programación con VBScript Variables Constantes Comentarios Operadores Estructuras de Control Bucles Funciones y Procedimientos
Variables En general: Imprimir valor de variable No hay que declararlas. Suele ser útil declararlas. Option Explicit (obliga a declararlas) <% Dim x %> Sólo hay un tipo, el variant x = 36 x = “Mi texto” Imprimir valor de variable <% Response.Write (nombre_variable) %> <% =nombre_variable %>
Contantes, Operadores, … Constantes Se declaran con Const No cambian Const pi = 3.14159 Comentarios ‘Esto es un comentario Operadores +, -, *, / \ división entera, ^ exponenciación Concatenar strings & Lógicos: NOT, AND, OR y XOR Comparación: =, <>, <, >, <= y >=
Constantes, Operadores… Ejemplo 2: Calcular el precio real de dos ordenadores, que cuestan: 1123 euros 1326 euros Ambos sin iva. El programa debe devolver un mensaje personalizado. Santi, el precio total del ordenador 1 es: XXX euros Santi, el precio total del ordenador 2 es: YYY euros
Estructuras de control If .. Then ... ElseIf <% x = 23 If x < 0 Then %> <B>Número Negativo</B> ElseIf x>0 Then <B>Número Positivo</B> Else <B>Es cero</B> End If If condición Then sentencias Elseif condición2 Then sentencias2 Else sentencias3 End If
Estructuras de Control Ejemplo 3: Ejecutar un programa que escriba una frase distinta cuando se cumpla una determinada condición, según el siguiente valor: Valor “1” Valor “2” Otro valor (3, 4, 0 …)
Bucles Do while/until Do...loop while/until For…Next For Each…Next Exit Do Exit For
Bucles Do While... Loop <% x = 10 Do While x > 0 %> <B><% =X %></B><BR> x = x - 1 Loop Do While condición sentencias Loop
Bucles For ... Next <% For x = 1 To 5 %> For variable = inicio To fin sentencias Next <% For x = 1 To 5 %> <B><% =X %></B><BR> <% Next %>
Do while/until Do While Ejemplo Do Until Ejemplo do while condición sentencias loop Ejemplo do while a <= 10 a = a + 1 Do Until do until condición sentencias loop Ejemplo do until a > 10 a = a + 1
Do…loop while/until Do…loop While Ejemplo Do…loop Until Ejemplo do sentencias loop while condición Ejemplo a = a + 1 loop while a <= 10 Do…loop Until do sentencias loop until condición Ejemplo a = a + 1 loop until a > 10
For (each)…Next For…Next Ejemplo For each…Next Ejemplo For variable = inicio to fin sentencias Next Ejemplo For i = 1 to 10 a = a + 1 For each…Next For each variable in seq sentencias Next Ejemplo For each persona in cola contador = contador + 1
While For each…Next Ejemplo While condición sentencias Wend Dim value While value < 10 value = value + 1
Bucles Ejercicio 4: Realizar la tabla de multiplicar del 1 hasta el 10, con valores del 1 al 10. 1 2 3 4 6 9
Mismo nombre que función Funciones Devuelve un valor Function nombre (parametros) setencias nombre = … End Function Function gradosCelsius(gradosCent) gradosCelsius = (gradosCent - 32) * 5 / 9 End Function cent = 35 celsius = gradosCelsius(cent) Mismo nombre que función
Procedimientos No devuelven valor Sub nombre (parametros) sentencias End Sub <% Sub trata_Cadena (miCadena) %> La cadena inicial: <% =miCadena %><BR> En mayúsculas: <% =UCase(miCadena) %><BR> Número caracteres: <% =Len(miCadena) %><BR> <% End Sub %>
Procedimientos Llamar a Sub Call trata_Cadena("Cuántas letras tengo?")
Funciones y Procedimientos Ejemplo 5a: Realizar la suma de los 100 primeros números (número triangular) utilizando funciones. Ejemplo 5b: Lo mismo que el ejercicio anterior pero utilizando procedimientos.
Funciones Integradas en ASP Cogen argumentos y devuelven un valor Manipulan strings, fechas y horas y matemáticas miPalabra = "Patata" x = Len(miPalabra)
<!-- #INCLUDE FILE="cabecera.inc" --> Inclusión de ficheros Suele ponerse extensión .inc Luego se incluye con <!-- #INCLUDE FILE="cabecera.inc" -->
Modelo de Objetos ASP
Modelo de Objetos Estructura de Modelo de Objetos Objeto Request Colección QueryString y Form Colección Cookies Colección ServerVariables Objeto Response Objeto Server Otros Objetos
Modelo de objetos de ASP Server Objeto Request Cliente Servidor Objeto Response Objeto Application Objeto Session Objeto ObjectContext
Modelo de objetos de ASP Aplicación ASP (Objeto Application) Session Session ........ Session Cliente Cliente ........ Cliente
Modelo de objetos de ASP Objeto Request: captura la información que va del cliente al servidor. Objeto Response manda información del servidor al cliente. tiene métodos y propiedades para modificar y crear lo que se envía al cliente. También para redirigir a otra página. ObjectContext: se utiliza para finalizar o abortar una transacción realizada por el MTS (Microsoft Transaction Server) y que ha sido ejecutada por otro Script ASP.
Modelo de objetos de ASP Objeto Application: Sirve para almacenar información que será compartida entre todos los clientes Application(“nombre”) = valor Si algún cliente quiere modificar alguna variable debe realizar un lock y un unlock. <% Application.Lock Application("numero") = 15 Application.Unlock %>
Modelo de objetos de ASP Objeto Session: Almacena información válida para todas las páginas mientras dure la sesión del usuario. Cuando el usuario accede por primera vez se genera un identificador único.
Modelo de objetos de ASP Ejemplo 6: Mantenimiento del estado de una Sesión Objetivo: Familiarización con el mantenimiento del estado de una sesión de usuario. Tenemos que realizar dos páginas Web. La primera de ellas contendrá un formulario en el que se pedirá al cliente su nombre y apellidos. La segunda página recogerá el valor de los campos del formulario y los almacenará como variables de Sesión. A continuación volverá a leer esas variables para sacar su valor por pantalla.
Objeto Request Colecciones QueryString Form ServerVariables Cookies ClientCertificate Propiedades TotalBytes Métodos BinaryRead
Colección QueryString y Form Cliente (Navegador) Formulario Servidor (Aplicación ASP) METHOD = GET METHOD = POST Datos enviados en URL Datos enviados en cabecera HTTP Los datos se leen con colección QueryString Los datos se leen con colección Form
Colección QueryString y Form <FORM NAME="informacionusuario" ACTION="INFORMACION.ASP" METHOD="GET" > <H2>Por favor, introduce tus datos</H2><P> <PRE> Nombre <INPUT TYPE="TEXT" NAME="sNombre" SIZE=20> Correo-e <INPUT TYPE="TEXT" NAME="sCorreo" SIZE=20> Dirección <TEXTAREA SIZE="15,2“ NAME="sDireccion"> </TEXTAREA> </PRE> <CENTER> <INPUT TYPE=CHECKBOX NAME="bPoner" VALUE=True>Añademe a la lista de direcciones<P> <INPUT TYPE=RESET VALUE="Limpiar"> <INPUT TYPE=SUBMIT VALUE="Enviar"> </CENTER> </FORM>
Colección QueryString y Form <% For each Objeto in Request.QueryString %> Nombre del Objeto ‘<% Response.Write(Objeto) %>’ tiene Valor ‘<% = Request.QueryString(Objeto) %>’<BR> <% Next %> <P> <% Dim nombre nombre = Request.QueryString("sNombre") %> Nombre: <% =nombre %> Si se utiliza POST es todo lo mismo pero utilizando Request.Form
Colección QueryString y Form Ejercicio 7a: Formulario de creación de usuarios. Campos: Nombre Usuario Password y Repetir Password Método POST Comprobacion de Passwords iguales y mayores a 7 letras o digitos. Aviso de creación correcta o incorrecta Ejercicio 7b: Formulario de creación de usuarios. Método GET (ERROR MUY GORDO!)
Colección QueryString y Form Más ejercicios: Calculo de edad: Realizar un formulario que recoja la fecha de nacimiento de una persona en formato mm/dd/aa y que la envie a otra página que calcule la edad de la persona. Las funciones que se deben utilizar son datediff que devuelve la diferencia en días de dos fechas dadas e Int que realiza una división entera.
La colección Cookies Satisface la necesidad de almacenamiento de información permanente. Es un paquete de información que es enviado del cliente al servidor en cada respuesta. Con Request leemos, con Response escribimos. <% Response.cookies("ultimoDiaConexion") = Date %> <% For each var in Request.Cookies %> Cookie: '<% response.write(var) %>' Valor: '<% =Request.Cookies(var) %>' <BR> <% Next %>
La colección Cookies Ejercicio 8: Familiarizarnos con el uso de las cookies en la máquina del cliente. Hay que realizar dos páginas ASP. La primera sacará en una tabla todas las cookies de la máquina cliente, dando la opción de borrarlas. Además, tendrá un formulario que permitirá añadir cookies a través de dos campos, el campo nombre y el campo valor. La segunda página se encargará del borrado y de la inserción de las cookies.
Colección ServerVariables Valor = Request.ServerVariables(“HeaderType”) HeaderType: REMOTE_ADDR: Dirección IP de máquina remota LOGON_USER: Usuario ALL_HTTP: Toda la cadena HTTP HTTP_USER_AGENT: Cliente utilizado HTTP_COOKIE: Cookies en la máquina remota HTTP_REFERER: Página de la que procedo HTTP_ACCEPT: Tipo de ficheros admitidos
El objeto Response Permite escribir información y cookies en cliente Para realizar redirecciones: Response.Redirect(“nombre”) Permite realizar buffering: Response.Buffer Response.Clear Response.Flush Controlar cuando expira una página: Response.Expires(min)
El objeto Server Tiene 4 métodos: CreateObject: Crea una instancia de un objeto en el servidor HTMLencode: Aplica codificaciónm HTML a una cadena Mappath: Convierte un path virtual en un path físico URLencode: Aplica codificación URL a una cadena
http://www.fi.upm.es/hola que tal:ñá El objeto Server Ejercicio 9: Escribir el texto <b>texto negrita</b> <i>texto italica</i> <a href=‘http://laurel.datsi.fi.upm.es/’>UPM</a> Usando la funcion HTMLencode Sin usarla Escribir la direccion web http://www.fi.upm.es/hola que tal:ñá Usando la función URLencode
Otros Objetos Objeto Scripting.Dictionary contiene pares de elementos (clave, valor). Por ejemplo carrito de compras. Objeto Scripting.FileSystemObject proporciona acceso al sistema de ficheros del ordenador.
Acceso a Ficheros ASP
Uso de Sistemas de Fichero y E/S set fs = Server.CreateObject(“Scripting.FileSystemObject”) Acceso a todas las unidades de discos DEL SERVIDOR!! (Ejemplo 10) set discos = fs.Drives for each d in discos … next Propiedades de una unidad if (NOT fs.DriveExists(“H”)) then Wscript.Quit else set drive = fs.GetDrive(“H”) if (drive.IsReady) then drive.DriveLetter drive.DriveType ‘ (Desconocido, Borrable, Duro, Remoto, CD, RAM) drive.VolumeName (ShareName) drive.TotalSize drive.FreeSpace end if
Uso de Sistemas de Fichero y E/S Acceso a carpetas set carpeta = fs.GetFolder (path) set carpetas = carpeta.SubFolders for each c in carpetas … c.Name Next Acción Sentencia Crear nueva carpeta Set nc = fs.CreateFolder(path) Renombrar c.Rename(nombre) Copiar carpeta fs.CopyFolder path1 path2 Mover carpeta fs.MoveFolder path1 path2 Borrar carpeta fs.DeleteFolder(path) Existencia Carpeta fs.FolderExists(path)
Uso de Sistemas de Fichero y E/S Acceso a ficheros set ficheros = carpeta.Files for each f in ficheros … f.Name f.Size f.DateCreated f.DateLastModified Next Ejemplo 11: Mostrar el contenido de la carpeta System32 Existencia de fichero fs.FileExists(fichero) Copiar ficheros fs.CopyFile path1 path2 Borrar ficheros fs.DeleteFile(fichero)
Uso de Sistemas de Fichero y E/S Ejemplo 12: Sistema Backup Realizar un sistema backup que copie todo el contenido de una carpeta dentro de otra carpeta. Se aconseja utilizar como destino, la carpeta Backup, y dentro de el, una carpeta de copia, según la fecha de hoy: path2 & Day(Date) & "-" & Month(Date) & "-" & Year(Date)
Uso de Sistemas de Fichero y E/S Acceso a un fichero de texto OpenTextFile (nombre [, modo[, crear[, formato]]] ) Modo: (1) ForReading, (2) ForWriting, (3) ForAppending Crear: True si se va a crear nuevo. False en caso contrario Formato: TristateTrue si es Unicode, TristateFalse si es ASCII Lectura de fichero de texto set entrada = fs.OpenTextFile(“fichero.txt”) Do While Not (entrada.atEndOfStream) Texto = Texto & entrada.ReadLine & “<br>” Loop Escritura (con/sin reemplazo) en fichero set salida = fs.OpenTextFile(“fichero2.txt”, 2, True) texto = entrada.ReadLine salida.WriteLine texto
Uso de Sistemas de Fichero y E/S Ejemplo 13: Copiar el contenido de un fichero en otro
Acceso a Bases de Datos ASP
Acceso a Bases de Datos Introducción a BBDD Microsoft Access Acceso a BBDD con ASP
Introducción a BBDD Base de datos Gestor de base de datos Conjunto de datos interrelacionados Almacenados sistemáticamente Gestor de base de datos Programa informático Almacena los datos de forma eficiente Permite acceder rápidamente a los datos SQL – Structured Query Language Lenguaje estándar de interrogación Es un estándar ANSI/ISO Pronunciado ‘esquiuel’
Ejemplo de BBDD Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8
SQL: Sentencia USE Seleccionar la BBDD a la que se desea acceder Los lenguajes de programación proporcionan una función
SQL: Sentencia SELECT Consulta una BBDD SELECT DISTINCT [*|cols] [FROM table-list] [WHERE expr] [GROUP BY expr-list] [HAVING expr] [ORDER BY sort-expr-list]
SELECT apellidos, email FROM estudiantes Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8
SELECT apellidos, email FROM estudiantes Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8
SELECT apellidos FROM estudiantes WHERE nota>=5 Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8
SELECT apellidos FROM estudiantes WHERE nota>=5 Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8
Operador LIKE Busca una subcadena El símbolo % encaja con cualquier cosa Ejemplos LIKE ‘ma%’ = Empieza por ‘ma’ LIKE ‘%id’ = Acaba por ‘id’ LIKE ‘Ma%id’ = Empieza por ‘ma y acaba por ‘id’ LIKE ‘%dr%’ = Contiene la cadena ‘dr’
SELECT * FROM estudiantes WHERE email LIKE ‘%ma%’ Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8
SELECT * FROM estudiantes WHERE email LIKE ‘%ma%’ Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8
SQL: Sentencia INSERT Añade nuevas entradas a una tabla INSERT INTO table-name [(column-list)] VALUES(value-list) Ejemplo: INSERT INTO estudiantes VALUES (983476, ‘Ruiz Santos’, ‘Carmen’, ‘’, 8)
Ejemplo: INSERT Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Martín Ibarra Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8 983476 Ruiz Santos Carmen
SQL: Sentencia UPDATE Modifica datos ya existentes en una BBDD UPDATE table-name SET assignment [, assignment]* [WHERE expr] Ejemplo UPDATE estudiantes SET apellidos = ‘Castro Martín’ WHERE matricula = 960535
Ejemplo: UPDATE Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Castro Martín Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8 983476 Ruiz Santos Carmen
SQL: Sentencia DELETE Elimina entradas de la BBDD DELETE FROM table-name [WHERE expr] Ejemplo: DELETE FROM estudiantes WHERE nota < 5
Ejemplo: DELETE Matrícula Apellidos Nombre Email Nota 920239 García Noblejas Pedro pgarcía@inem.es 5 930834 Marcos Sanabria Ana amarcos@inem.es 7 934587 Malik Pérez Juan jmalik@inem.es 2 960535 Castro Martín Joaquín jmartim@inem.es 3 970345 Guarner Calderón Pablo pguarner@inem.es 970353 Peña Marcos Alicia apeña@inem.es 9 980657 Soler Vera Guillermo gsoler@inem.es 8 983476 Ruiz Santos Carmen
Microsoft Access Ejemplo 14: Crear una base de datos en Access, según lo explicado en clase. Las tablas van a ser: Persona: Información sobre una persona Compra: Que persona compra que producto?? Producto: Información sobre un producto
Open DataBase Connectivity Acceso a Base de Datos ActiveX Data Objects ADO OLE DataBase Open DataBase Connectivity OLEDB ODBC BD
Objetos para acceso a BD Objecto Connection Representa la conexión con la BD Objecto RecordSet Representa una tabla de datos proveniente de realizar una consulta Un objeto se crea con el comando Set. <% Set nombre_obj = ... %> Los objetos se cierran con el método Close. <% nombre_obj.Close %> Y por último se destruyen... <% Set nombre_obj = Nothing %>
Acceso a BBDD con ASP Acceso a BBDD con ASP Creacion de la conexión con la BD Acceso “REAL” a la BD (consulta, etc) Cierre de la conexión Acceso a los datos obtenidos (record)
Acceso a BBDD con ASP <% ‘Creación del objeto Connection Set Conn= Server.CreateObject("ADODB.Connection") ‘Apertura de la BD Conn.open “PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA SOURCE= C:\inetpub\wwwroot\alumnos.mdb;” ‘Ejecución de una Query sSQL = "SELECT * FROM alumnos" Set rsDatos = Conn.Execute (sSQL) %>
Acceso a BBDD con ASP <% ‘Ejecución de una Query Compleja, a partir de un formulario sSQL="SELECT * FROM alumnos WHERE Codigo=" & Request.QueryString("codigo") Set rsDatos = Conn.Execute (sSQL) %>
Acceso a BBDD con ASP <% ‘Cierre de la conexión con la BD Conn.Close ‘Asignar a “nada” la variable utilizada Set Conn = Nothing ‘Cierre del record obtenido rsDatos.Close Set rsDatos = Nothing %>
Acceso a los datos obtenidos <TABLE> <TH>Nombre <TH>Apellidos <TH>Más información <% Do While Not rsDatos.EOF %> <TR> <TD> <% Response.Write(rsDatos("Nombre"))%> </TD> <TD> <% Response.Write(rsDatos("Apellidos"))%> </TD> <TD> <a href="masinfo.asp?codigo= <% Response.Write(rsDatos("Codigo")) %>">Detalles</TD> <% rsDatos.Movenext %> </TR> <% Loop %> </TABLE> <% Conn.Close Set Conn = Nothing rsDatos.Close Set rsDatos = Nothing %> Recomendación: if Not rsDatos.Eof Then …
BBDD con ODBC
BBDD con ODBC
BBDD con ODBC
Acceso a BBDD Ejemplo 15: Consulta a Base de Datos Realizar una página Web que acceda la base de datos clase.mdb, a la que habremos dado como DSN el nombre de "clase". Ejemplo 16: Inserción en Base de Datos Ejemplo 17: Modificación y Borrado en Base de Datos Ejemplo 18: Informacion de un Libro Otros ejemplos: Buscador Alumnos Buscador Libros
Referencias ASP
Referencias Programación de Aplicaciones Web. S. Rodríguez, F. Pérez, J. Carretero, F. García, A. García, D. Nevado, M.S. Pérez, V. Robles, F. Rosales (2003). Editorial: Thomson. ISBN: 84-9732-181-2. ASP - MSDN Microsoft http://msdn2.microsoft.com/en-us/library/aa286483.aspx Directorio ASP http://dmoz.org/World/Español/Computadoras/Programación/Lenguajes/ASP/
ASP Active Server Pages Oscar Cubo Medina <ocubo@fi.upm.es> Santiago González Tortosa <sgonzalez@fi.upm.es> Victor Robles Forcada <vrobles@fi.upm.es> Programación Web en Servidor INEM – 2007