66
Desarrollo de aplicaciones de BD Bases de datos II: Tema 2

Desarrollo de aplicaciones de BD - informatica.uv.esinformatica.uv.es/iiguia/2000/BD2/2_0_BD2Tema2_06.pdf · realiza una tarea. Una aplicación de BD es un programa que utiliza los

  • Upload
    vandien

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Desarrollo de aplicaciones de BD

Bases de datos II: Tema 2

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 22006/07

Estructura del tema

1. Introducción.

2. Desarrollo de aplicaciones con SQL en lenguajes de propósito general.

3. Tecnologías web y acceso a bases de datos desde la web

4. Herramientas específicas de los SGBD.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 32006/07

1. Introducción� La mayor parte de usuarios de una base de

datos no usa un lenguaje de consultas como SQL, sino:� Formularios� Interfaces gráficos� Generadores de informes� Herramientas de análisis de datos

� Muchos interfaces son interfaces web.� Los usuarios no trabajan directamente con la

base de datos, sino con aplicaciones.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 42006/07

1. Introducción

� Una aplicación es un programa informático que realiza una tarea.� Una aplicación de BD es un programa que utiliza los

datos de un sistema de gestión de bases datos.

� La mayoría de las aplicaciones de base de datos presentan datos de forma útil o facilitan la introducción o actualización de datos en la BD.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 52006/07

1. Introducción� Las aplicaciones de bases de datos trabajarán

interactuando con el SGBD� Hay varias formas de desarrollar aplicaciones

de BD:� desde lenguajes de alto nivel � hasta herramientas específicas para este propósito.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 62006/07

2. Desarrollo de aplicaciones con lenguajes de propósito general� Las consultas (e instrucciones) SQL pueden

ser llamadas desde dentro de un programa escrito en un lenguaje de propósito general (lenguaje host)�Las sentencias SQL pueden emplear variables

“anfitrionas” (incluyendo variables especiales para devolver status)�Deberán incluirse sentencias específicas para

conectar con la base de datos adecuada

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 72006/07

2. Desarrollo de aplicaciones con lenguajes de propósito general� Como lenguaje de propósito general nos

referimos a lenguajes tipo Pascal, C, C++, Java, (o otros no específicos de BD) ...� Posibilidades para atacar una BD desde

uno de estos lenguajes:�SQL embebido en uno de estos lenguajes�ODBC�JDBC�otros...

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 82006/07

2. Desarrollo de aplicaciones con lenguajes de propósito general

Adaptación entre SQL declarativo y otros lenguajes� Las consultas SQL, como lenguaje declarativo,

pueden devolver una relación� La relación es un conjunto de registros, sin límite a priori

en el número de ellos� Los lenguajes procedimentales no contienen

habitualmente una estructura de datos apropiada para ello

� SQL proporciona un mecanismo de adaptación conocido como cursor .

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 92006/07

2. Desarrollo de aplicaciones con lenguajes de propósito general

Veremos� SQL embebido� ODBC� JBDC

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 102006/07

2.1 SQL embebido

� Está pensado para intercalar sentencias SQL en un lenguaje de alto nivel.� Se necesita un pre-compilador (en Oracle Pro*C)

� Traduce las sentencias SQL convirtiéndolas en llamadas a unas librerías específicas.� Genera un programa fuente modificado que se

puede compilar, enlazar y ejecutar.� Permite incluir sentencias SQL y bloques PL/SQL.� Oracle dispone de preprocesador para Cobol, C y C++.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 112006/07

2.1 SQL embebido

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 122006/07

2.1 SQL embebido� Construcciones del lenguaje

�Conectar a una base de datos� EXEC SQL CONNECT

�Declarar variables� EXEC SQL BEGIN/END DECLARE SECTION

�Ejecutar sentencias SQL� EXEC SQL Sentencia

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 132006/07

2.1 SQL embebido. Ejemplo

� Un programa ejemplo en C�Se conecta a la BD Oracle: scott/tiger�Realiza una consulta (que devuelve

únicamente un registro).�Muestra el resultado por pantalla.

� Contiene una función para controlar los errores devueltos por Oracle.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 142006/07

#include <iostream>#include <string.h>

main(){

EXEC SQL BEGIN DECLARE SECTION;VARCHAR nom_usuario[30],contraseña[10];

VARCHAR vnombre[20],vapellido[30];float vsalario;

EXEC SQL END DECLARE SECTION;

strcpy((char *)nom_usuario.arr,”scott”);nom_usuario.len = strlen(nom_usuario.arr);

strcpy((char *)contrasenya.arr, “tiger”);

contrasenya.len=strlen(constrasenya.arr);

EXEC SQL WHENEVER SQLERROR DOsql_error();

EXEC SQL CONNECT:nom_usuario IDENTIFIED BY :contrasenya

Declaración devariables

Poner valores variables

‘anfitrionas’

Sentencia controlde errores

Conexión basede datos

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 152006/07

EXEC SQL SELECT nombre, apellido, salario INTO :vnombre,

:vapellido, :vsalario FROM EMPLEADO WHERE salario =

(select max(salario) from empleado);

vnombre.arr[vnombre.len]=‘\0’; vapellido.arr[vapellido.len]=‘\0’;

cout << “Nombre, apellidos, salario:\n”;

cout << vnombre.arr << ‘ ‘ << vapellido.arr << ‘ ‘ << vsalario;

}

int sql_error()

{

EXEC_SQL WHENEVER SQLERROR CONTINUE;

cout << “Error detectado” << endl;

}

Realizar consulta

Imprimeresultados

Tratar errores

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 162006/07

2.1 SQL embebido

� Información más completa sobre SQL embebido enhttp://informatica.uv.es/guia/asignatu/BD2/sqlembeb ido.pdf

� Notas: � se puede utilizar tanto en Linux como en Windows.

� Se puede integrar dentro de herramientas como Visual C++ o Builder C++.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 172006/07

2.2 ODBC2.3 JDBC� En lugar de modificar los compiladores o emplear

precompiladores, pueden utilizarse nuevas librerías con llamadas a la base de datos (API = Application Programming Interface)

� Mientras que las aplicaciones en SQL embebido son independientes del SGBD en cuanto al código fuente (deben ser recompiladas para cada uno), las aplicaciones con ODBC o JDBC son independientes del SGBD en cuanto al ejecutable.

� ODBC y JDBC pretenden estandarización y portabilidad

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 182006/07

2.2 ODBC� ODBC (Open Database Connectivity) permite acceder a

las BD (a través de los SGBD) desde cualquier aplicación� Cada SGBD tiene su propia forma de recibir consultas SQL y su

propio modo de devolver el resultado.

� La idea es que se pueda escribir código independiente de cuál sea el SGBD.� ODBC inserta una capa intermedia llamada manejador de

Bases de Datos , entre la aplicación y el SGBD� el propósito de esta capa es traducir las consultas de datos de la

aplicación en órdenes que el SGBD entienda.

� tanto la aplicación como el SGBD deben ser compatibles con ODBC, esto es que la aplicación debe ser capaz de producir sentencias ODBC y el SGBD debe ser capaz de responder a ellas.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 192006/07

2.2 ODBC� Permite acceder a bases de datos en diferentes SGBD

simultáneamente.� Cada SGBD necesita su controlador (ODBC driver)

específico para trasladar las llamadas del ODBC en llamadas específicas del sistema gestor.� Para conectarse a la Base de Datos se crea una DSN

(Data Source Name) dentro del ODBC que define los parámetros, ruta y características de la conexión

� ODBC es un estándar de acceso a Bases de Datos desarrollado por Microsoft� http://www.microsoft.com/data/odbc

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 202006/07

2.2 Utilización de ODBC

� Pasos que realiza una aplicación que interacciona con una fuente de datos a través de ODBC:� se selecciona una fuente de datos (DSN).� se carga el controlador correspondiente.� se establece la conexión.� cada conexión sólo ve los cambios de las

transacciones confirmadas.� la aplicación se desconecta de la fuente de datos

para terminar la interacción.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 212006/07

2.2 ODBC Ejemplo de configuración

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 222006/07

2.2 ODBC Ejemplo sencillo

� Ejemplo en matlab:con1 = database(‘bdmysql’,usu1,password1);

con2 = database(‘bdoracle’,usu2,password2);

consulta=‘select nombre, apellido from alumnos’;

consulta2=‘select dni, email from socios’;

cursor=exec(consulta);

cursor=fetch(cursor)

cursor.data %se muestran los datos recuperados

close(cursor);

close(con1);

cursor2=exec(consulta2);

Cursor2 = fetch(cursor2)

cursor2.data % se muestran los datos de la 2º consu lta

close(cursor)..

close (con2)

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 232006/07

2.2 Ventajas ODBC

� Permite acceder a distintos tipos de SGBD de forma única (por medio de una API).� No es necesario saber detalles de cómo

trabaja cada uno de estos sistemas.� Biblioteca de funciones fija para distintos

sistemas.� Se puede crear una aplicación que acceda

a varias fuentes de datos

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 242006/07

2.3 JDBC

Java DataBase Connectivity� ¿Qué es JDBC? Es una biblioteca de clases

que permite la conexión con BD que soporten SQL mediante Java.� El controlador correspondiente es el

encargado de interactuar con el sistema.� ¿Qué ventajas ofrece la utilización de JDBC?

La aplicación es independiente de la plataforma y se puede mover la aplicación de un SGBD a otro. Al igual que ODBC, el código Java es independiente del SGBD utilizado.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 252006/07

2.3 JDBC: arquitectura� Aplicación (inicia y termina las conexiones,

envía sentencias SQL)

� Gestor del controlador(carga el driver JDBC)

� Controlador(conecta con la fuente de datos, transmite peticiones y devuelve/traduce resultados y códigos de error)

� Fuente de datos(el SGBD, procesa peticiones SQL)

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 262006/07

2.3 JDBC: tipos de controladores� Tipo 1 - Puentes: p.e. puente JDBC-ODBC, traducen

JDBC a ODBC y se delega en ODBC para la comunicación con el SGBD.� Tipo 2 – Traducción directa a controlador no-Java:

Escrito parcialmente en JAVA y código nativo� Tipo 3 – Network Bridges: es una biblioteca cliente

escrita completamente en Java que utiliza un protocolo independiente de la BD para comunicar las peticiones a un servidor intermedio que las traduce a un protocolo específico del SGBD (el software del servidor intermedio que traduce las peticiones al SGBD concreto).� Tipo 4 – Traducción directa a controlador Java: Escrito

completamente en Java que traduce las peticiones al protocolo específico de cada SGBD.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 272006/07

2.3 Programación con JDBC

� Programación con JDBC:� Cargar la clase que representa al controlador.� Establecer una conexión a una base de datos.� Ejecutar sentencias SQL� Obtención de resultados� Cerrar la conexión.

� Ejemplo sencillo:

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 282006/07

DriverManager.registerDriver(new com.mysql.jdbc.Driv er());

string url = “jdbc:mysql://localhost:3306/estancias?user=usu1&pa ssword=clave”;

Connection con = DriverManager.getConnection(url);

statement stmt = con.createStatement();resultSet rs = stmt.executeQuery("SELECT a, b, c FROM

Tabla1");

while (rs.next()) {int x = rs.getInt("a");String s = rs.getString("b");float f = rs.getFloat("c");

}stmt.close();

Especifica driver y abre conexion

Ejecuta una sentencia SQL

Ejecuta una consulta y recoge los resultados

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 292006/07

2.3 Programación con JDBC

� Gestión del driver�mediante la clase DriverManager (.registerDriver, .getConnection)

� Conexiones� cada conexión supone una sesión lógica

� Ejecución de sentencias SQL� statement (stmt.executeQuery)

� Obtención de resultados� ResultSet , métodos para cursores� next, previous, absolute, relative, first, last / getDatatype (getInt)

StatementPreparedStatementCallableStatement

(proc. almacenados)

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 302006/07

2.3 Programación con JDBC

� Aspectos adicionales(ver en Ramakrishnan)

�Gestión de errores y advertencias (6.3.5 / sl. 6.23-24)

�Acceso a los Metadatos de la BD (6.3.6 / sl. 6.25-26)

�Procedimientos almacenados (6.5 / sl. 6.31-35)

� Más información (en inglés)http://www-db.stanford.edu/~ullman/fcdb/oracle/or-jdbc.html

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 312006/07

3. Acceso a BD desde la web3.1 Tecnologías web� Conceptos básicos de la web� Arquitectura de aplicaciones web� Interfaces web (formularios)

3.2 Programación de aplicaciones web-BD

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 322006/07

3.1 Tecnologías web� La web es un sistema de información distribuido basado

en hipertexto� Los recursos accesibles en Internet se identifican por un

URI (URL) (p.e. http://informatica.uv.es/iiguia/2000/BD2/index.html )� el protocolo con que acceder al recurso� el nombre (o dirección) del host� el nombre del recurso

� HTML es un lenguaje que indica como mostrar contenido textual junto al formato, imágenes y enlaces de hipertexto, así como posibilidades de entrada de datos

� HTTP es el protocolo de comunicación entre clientes y servidores web: el cliente envía una petición y el servidor produce una respuesta (una página HTML, [puede ser error])� HTTP es stateless

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 332006/07

3.1 Tecnologías web� Arquitectura de aplicaciones en red�una aplicación en red intensiva en acceso a

datos tiene 3 tipos de funcionalidades� Gestión de los datos� Lógica de la aplicación� Presentación

�Estas funcionalidades se pueden (o no) separar en capas

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 342006/07

Arquitecturas de una capa

�Todas las funcionalidades se combinan en una única capa, usualmente en un mainframe�Los usuarios acceden mediante

terminales “tontas” de texto

�anticuado, (sobre)carga de cómputo en el sistema central

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 352006/07

Arquitecturas cliente-servidor� División de trabajo con cliente ligero�el cliente sólo implementa la interfaz gráfica

para presentación�el servidor implementa la lógica de la

aplicación y la gestión de datos

� División de trabajo con cliente pesado�el cliente sólo implementa tanto la interfaz

gráfica como la lógica de la aplicación�el servidor implementa la gestión de datos

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 362006/07

Arquitecturas cliente-servidor� Inconvenientes de las arquitecturas

cliente-servidor, esp. con cliente pesados�Los clientes deben instalarse (y reinstalarse)�No hay un lugar único donde actualizar la

lógica de la aplicación�Puede tener problemas de seguridad

� El servidor debe confiar en los clientes y controlar el control de acceso y la autenticación

�Es difícil de escalar a muchos clientes, por la gran cantidad de datos a transferir

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 372006/07

3.1 Tecnologías web� Arquitectura de tres capas�Capa de presentación

� Interfaz con el usuario (cliente-navegador)

�Capa intermedia (servidor web, serv. aplicaciones)(también capa de “lógica de la aplicación”)� Implementa la lógica de la aplicación (control de flujo)

� Puede acceder a diferentes fuentes de datos

�Capa de gestión de datos� Uno o más SGBD

(Ej.: Automatrícula de la UV)

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 382006/07

3.1 Tecnologías web� Arquitectura de tres capas

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 392006/07

3.1 Tecnologías web� Ventajas de la Arquitectura de tres capas�Heterogeneidad de los sistemas

las capas pueden ser modificadas independ.�Clientes ligeros: el usuario sólo req. un navegador

�Acceso integrado a los datos: se puede acceder a varias BD transparentemente para el usuario

�Escalabilidad: los servidores intermedios pueden replicarse para servir a más clientes

�Desarrollo de software centralizado

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 402006/07

3.1 Tecnologías web� Interfaces web: Formularios�son el modo más común de solicitar y comunicar

datos entre el cliente y el servidor� los formularios se insertan en una página web�componentes de un formulario

<FORM ACTION="/cgi-bin/postman" NAME="theform" METHOD="POST">

�campos de un formulario� INPUT type, name, value (Ej.: correo.uv.es)

<INPUT TYPE=“text” NAME=“user” VALUE="">

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 412006/07

3.1 Tecnologías web� Interfaces web: Formularios�métodos de paso de argumentos

� GET y POST

�codificación de caracteres introducidos� el usuario puede introducir cualquier carácter ASCII,

entre ellos caracteres no válidos para un URI� los caracteres se convierten según su código� un programa en el servidor tendrá que reconvertirlos

�Un tutorial sobre formularios (y todo HTML) enhttp://gias720.dis.ulpgc.es/Gias/Cursos/Tutorial_html/guia_rap.htm#dform

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 422006/07

3.2 Aplicaciones web-BD

� Básicamente se tienen dos categorías:� con lenguajes de escritura de scripts.� con lenguajes de programación de propósito general.

� Los programas con scripts pueden ser� para que se ejecuten en el servidor web� para que se ejecuten en el propio navegador

� Los programas con lenguajes de prop.general� se ejecutan siempre en el S.O. del servidor web

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 432006/07

3.2.1 Lenguajes de escritura de scripts

� Se pueden escribir scripts que se ejecuten en:

� el cliente: se ejecutan en las páginas web que se envían al navegador (host para este código).

� el servidor : son ejecutados e interpretados por el propio servidor web quien se encarga de generar el formato comprensible que será enviado al cliente (navegador) que hizo la petición. El navegador nunca ve el contenido de los scripts del lado del servidor, sólo la salida que éstos producen.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 442006/07

3.2.1 Lenguajes de escritura de scripts

� Scripts del lado del cliente:� Son pequeños programas que se insertan en la

página HTML con la que el servidor web responde a una petición de un navegador(javascript, VBScript)� generalmente se incluyen en HTML entre etiquetas

<SCRIPT> … </SCRIPT>

� Su objetivo es añadir ciertas funcionalidades a la capa de presentación� Permiten realizar pequeñas tareas: comprobación

de datos en un formulario, cambio de idioma dependiendo del cliente.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 452006/07

3.2.1 Lenguajes de escritura de scripts

� Scripts del lado del cliente:� JavaScript es un lenguaje de scripts completo� con variables, operadores, sentencias y funciones

� Ejemplo:� cuando se selecciona un país en el menú de la izquierda

el menú de la derecha muestra las regiones de ese país

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 462006/07

3.2.1 Lenguajes de escritura de scripts� Scripts del lado del servidor:� cuando un cliente (navegador) solicita al servidor web

una URL que no es una página estática sino un script, el servidor web utiliza un motor de scripts para ello� el servidor también recibe los inputs de formularios� el script procesa y debe producir una página web que el

servidor devuelve como respuesta.� los scripts pueden estar incrustados en HTML� lenguajes utilizados:� ASP� PHP� JSP

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 472006/07

Scripts del lado del servidor

PHP (PHP: Hypertext Preprocessor) es un lenguaje interpretado de alto nivel embebido en páginas HTML. Permite el acceso a las principales BDs a través de funciones específicas de PHP escritas en C para cada SGBD. Permite además acceso a bases de datos mediante ODBC.

ASP (Active Server Pages) es el lenguaje de scripts del lado del servidor creado por Microsoft. ASP permite conexión a BD mediante ODBC.

JSP (Java Server Pages) es un lenguaje de scripts del lado del servidor. Utiliza para la parte dinámica de la página el lenguaje Java. Puede utilizar todas las funcionalidades queofrece Java para acceder a BDs.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 482006/07

Ejemplo de código ASP<HTML><HEAD><TITLE>Consulta en una tabla</TITLE></HEAD><BODY><h1><div align="center">Lectura de la tabla</div></h1><br><br><%‘instanciar el objeto Connection Set Conn = Server.CreateObject("ADODB.Connection")

‘Se abre la base de datos (nombre dado ODBC)Conn.Open "Mifuentededatos"

'Ahora creamos la sentencia SQL que nos ‘servira para hablar a la BDsSQL="Select * From Clientes Order By nombre"

'Ejecutamos la orden set RS = Conn.Execute(sSQL)

'Mostramos los registros%><table align="center"><tr><th>Nombre</th><th>Teléfono</th></tr><%Do While Not RS.Eof%><tr><td><%=RS("nombre")%></td><td><%=RS("telefono")%></td></tr><%RS.MoveNextLoop

'Cerramos la conexionConn.Close%></table></BODY></HTML> Consulta

Imprimirdatos

conexión

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 492006/07

<HTML><HEAD><TITLE>consulta.php</TITLE></HEAD><BODY><h1><divalign="center">Consultar Tabla</div></h1><br><br>

<?//Conexion con BD

mysql_connect("localhost",“usu",“elpassword");

//Ejecutamos la sentencia SQL$result=mysql_db_query(“miejemplo","select * from clientes");?>

Ejemplo de código PHP<table align="center"><tr><th>Nombre</th><th>Teléfono</th></tr>

<?//Mostramos los registroswhile($row=mysql_fetch_array($result)){echo '<tr><td>'.$row["nombre"].'</td>';echo '<td>'.$row["telefono"].'</td></tr>';}mysql_free_result($result)?>

</table></BODY></HTML>

conexión

consulta

Imprimirresultados

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 502006/07

<%@ taglib prefix="blx" uri="/blx.tld" %> <HTML> <BODY> <P> <blx:sqlConnection jndiName=“mifuentedatos">

<blx:sqlQuery id=“Consulta">SELECT dni,nombre FROM socios

</blx:sqlQuery><TABLE><TR><TD>id </TD><TD>Nombre</TD></TR><blx:sqlExecuteQuery resultSet="rs" queryRef=“Consul ta"><TR><TD><%= rs.getInt(“id") %></TD><TD><%= rs.getString(“Nombre") %></TD></TR></blx:sqlExecuteQuery></TABLE></blx:sqlConnection></BODY> </HTML>

Ejemplo de código JSP

conexión

consulta

Mostrarresultados

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 512006/07

3.2.2 Aplicaciones Web escritas con lenguajes de propósito general� CGI (Common Gateway Interface):� Esta interfaz fue una de las primeras técnicas

empleadas para crear contenido dinámico.� El objetivo del interfaz CGI es transmitir los inputs

de formularios HTML a un programa de aplicación ejecutándose en la capa intermedia (de aplicación)� Con CGIs el programa servidor web:� pasa las peticiones de los clientes a un programa externo� el servidor web envía la salida de este programa al cliente como

página estática� en una aplicación de bases de datos, el programa CGI

interactuará con los SGBD

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 522006/07

Acceso a BDs con CGI

ServidorServidor web

Programa CGI

SGBD

BDNavegador web

Cliente

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 532006/07

3.2.2 Aplicaciones Web escritas con lenguajes de propósito general� CGI (Common Gateway Interface):� Los programas CGI pueden ser:

� Desventajas de los CGI� se crea un nuevo proceso para cada invocación

� no se pueden compartir recursos entre prog. de aplicación

� ambos problemas se resuelven en parte con FastCGI o con servidores de aplicaciones

Compilados:C, C++, Pascal

Scripts ejecutables:Perl, tcl, sh

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 542006/07

<HTML><HEAD>

<TITLE>Prestamo de libros.</TITLE></HEAD><BODY><H1>Prestamo de libros</H1><FORM ACTION="http://slabii.uv.es:8001/pr.cgi"

METHOD="POST"><PRE>Socio: <INPUT TYPE="text" NAME="socio"><BR>Libro: <INPUT TYPE="text" NAME="libro"><P></PRE><INPUT TYPE="submit" VALUE="Solicitar prestamo">

</FORM></BODY></HTML>Socio=“Esther de Ves” &

libro=“C++”

//CGI en C : pr.cgimain(){

fgets(cadena,100,stdin);ProcesarCadena(cadena);MostrarResultadoHTML();

}

<html><head><title>Programa de préstamo</title></head><h1>Programa de préstamo</h1><p><font size="4">El préstamo realizado:</font></p><blockquote><p><font size="4">Titulo: C++</font></p><p><font size="4">Socio: Esther de Ves</font></p><p><font size="4">Fecha máxima: 3 de Octubre 2002</font></p><p><font size="4"><a href="prestamos.html">Volver principal</a>

</font></p></blockquote></body></html>

Entrada estándar Salida estándar

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 552006/07

Detalles del código de un ejemplo CGI

Ver sobre los materiales de la práctica 1

� cgi.cxx: métodos para tratar los inputs del CGI� vuelo.pc.alu: programa que produce la salida HTML

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 562006/07

3.2.2 Aplicaciones Web escritas con lenguajes de propósito general� Java Servlets:

� Alternativa de Java a los programas CGI tradicionales.� Es un programa escrito en Java (por tanto

independiente de la plataforma), ejecutándose en la capa intermedia, que responde a las peticiones de uno o más clientes. � La conexión a BD se puede realizar a través de

JDBC.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 572006/07

Ejemplo parcial Java Servletimport javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.sql.*;

public class ServletDelDesc extends HttpServlet {private static final String CONTENT_TYPE = "text/html";private static final String USER = "nuria";private static final String PASSWORD = "nuria";// Conexion a la BDConnection Conexión;

….// Crear la conexión a la BDtry {

DriverManager.registerDriver(new oracle.jdbc.driver. OracleDriver());Conexion = DriverManager.getConnection("jdbc:oracle: thin:@localhost:1521:midb",USER,PASSWORD);if (eliminar != null){

EliminarBD(request, out);

out.println("</body></html>");out.flush();out.close();

}…………….

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 582006/07

3.3 Consideraciones sobre aplicaciones web

HTTP es un protocolo sin estado� Ventajas� facilidad de uso e implementación�efectividad para pag. estáticas sin usar

mucha memoria

� Inconvenientes�el protocolo en sí no recuerda el flujo ni las

acciones anteriores

� Hay diversas vías de superar este inconveniente

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 592006/07

3.3 Consideraciones sobre aplicaciones web

� Guardar información en las capas “bajas”�La información se puede guardar� en la base de datos� en memoria local de la capa intermedia

�Tiene inconvenientes en cuanto a sobrecarga en los accesos a la BD o a la memoria�Sólo debe usarse esta solución para guardar

en BD información que debe ser duradera

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 602006/07

3.3 Consideraciones sobre aplicaciones web

� Guardar el estado en el cliente: cookies�Consisten en guardar una pequeña

información textual en el cliente, que se envía al servidor en cada petición HTTP�Son una colección de (nombre, valor)�Son percibidas como “peligrosas”�Son fáciles de usar pero limitadas a 4 KB�Pueden ser deshabilitadas por el cliente�Son útiles para información de login y como

modo de memoria temporal (no permanente)

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 612006/07

3.3 Consideraciones sobre aplicaciones web

� Guardar el estado en el cliente�campos ocultos� información en el path

�ambos mecanismos se pueden usar para solventar la deshabilitación de cookies�no requieren almacenamiento adicional ya

que son “pasados” en cada petición HTTP�ver ejemplo en correo.uv.es

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 622006/07

4.Herramientas específicas de los SGBD� En general cada sistema dispone de

herramientas para el desarrollo de aplicaciones de BD. � Oracle:�Developer 2000: permite al usuario diseñar

de forma interactiva programas con consultas y transacciones.�Servidor web de Oracle: permite acceder a

BD Oracle desde el web.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 632006/07

4 Herramientas específicas del SGBD

� Access dispone de varias características:�Asistentes para crear formularios,�Asistente para informes,� Incluir macros,�Programación en Visual Basic.

� MySQL�phpMyAdmin permite administrar y consultar la

base de datos a través de la web (escrito en PHP)

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 642006/07

Bibliografía

� R. Ramaskrishnan, J. Gehrke. Database Management Systems. (3ª edición) McGraw Hill. Capítulos 6 y 7.

� Elmasri y Navathe. Fundamentos de Sistemas de Bases de datos. Addison Wesley. Capítulo 10 y 27.

� Documentacion Oracle 8.0.

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 652006/07

Ejercicios:

1. Describe las fases para generar un ejecutable de un programa SQL embebido.

2. Imagina que tienes datos almacenados en dos SGBDsdiferentes (Oracle, SQL Server, Access) y tienes que hacer una aplicación que trabaje con todas esta información, ¿Qué podrías utilizar?

3. Ventajas y diferencias entre ODBC y JDBC.4. ¿Qué es un CGI?5. ¿Qué utilizarías para realizar una aplicación con acceso a una

BD mysql?6. Enumera algunas de las alternativas existentes para realizar

una aplicación web que acceda a una BD Oracle

UV- BD2 - T2 Desarrollo de aplicaciones de bases de datos (Vicente Cerverón - Esther de Ves) 662006/07

Supongamos que tenemos una BD Oracle instalada en un servidor pokemon.uv.es. El nombre de la BDs es mibd. En esa BD tenemos almacenada información sobre una biblioteca en la que, simplificando, tenemos 3 tablas:

Socios( dni , nombre, apellidos,email,telefono)Libros( idlibro ,titulo, autor)Prestamos( dni,idlibro, fecha)

Deseamos crear una pequeña aplicación accesible desde web que nos permita saber si un determinado libro está alquilado, por quien y desde cuando. El servidor web está instalado en una maquina diferente al servidor de datos:

slabii.uv.es. Utilizando los ejemplos sobre cgi y sql embebido, intenta escribir un pequeño programa que permitiría realizar esta tarea. Ten en cuenta que el servidor de datos y el servidor web no son la misma máquina.