Practica 5
Practica 5
JDBC
Objetivos
Introducción •••
Hasta ahora hemos utilizado general, junto con sus am- Esta práctica tiene como
SQL desde un intérprete in- plias colecciones de librerías objetivos fundamentales:
teractivo que nos permite in- (por ejemplo Java, C, PHP, - Aprender a acceder a ba-
troducir los diferentes co- Perl, …) ses de datos desde pro-
gramas escritos en otros
mandos uno a uno. También
En esta práctica nos familia- lenguajes.
hemos aprendido a utilizar
rizaremos con las herramien- - Familiarizarse con el con-
procedimientos almacenados cepto de acceso secuencial
tas que nos permiten utilizar
para agrupar sentencias y a las tuplas de una rela-
SQL para acceder a nuestras ción mediante cursores.
realizar pequeños programas
bases de datos desde pro- - Comprender el intercam-
SQL.
gramas escritos en otro len- bio de parámetros entre
Sin embargo, en muchas oca- guaje de programación (que procedimientos almace-
nados SQL y Java.
siones querremos que nues- llamaremos lenguaje “anfi-
tras bases de datos actúen trión”)
como fuentes de información
En concreto, vamos a utilizar
para programas más comple-
Java como lenguaje anfitrión,
jos. Este tipo de programas no
se pueden desarrollar en SQL
y el elemento principal para Entorno
poder utilizar SQL desde •••
dadas sus limitaciones como
Java es el driver JDBC (Java Para realizar los ejercicios de
lenguaje de propósito general
DataBase Conectivity). práctica es necesario:
(imaginemos un programa
1. Tener instalado el entorno
con una interfaz gráfica de JDBC es un API Java que como se configuró para prác-
usuario compleja, o un servi- independiza los procedi- ticas anteriores.
dor de aplicaciones a través de 2. Tener instalado el entorno
mientos de acceso a bases de
Eclipse para desarrollo en Ja-
Web) datos del sistema operativo y va.
del SGBD concreto que es- 3. Disponer de driver jdbc para
Para el desarrollo de este tipo MySQL (disponible en
temos utilizando. Gracias a http://dev.mysql.com/downlo
de aplicaciones complejas
esto, los programas desarro- ads/connector/j/)
necesitamos utilizar las posi-
llados dispondrán de una (En OpenSuse también se pue-
bilidades que nos proporcio-
portabilidad elevada entre de instalar el driver con:
nan los modernos lenguajes “sudo zypper install
entornos diferentes.
de programación de propósito mysql-connector-java”)
1
Modificando bases de datos vía JDBC
Establecimiento de conexiones
Ejecutando sentencias
Para realizar este ejercicio deberás, por tanto, El programa se debe poder ejecutar tantas veces
consultar la documentación de esta clase. como se estime oportuno, sin que su compor-
tamiento dependa del estado de la base de da-
Ejercicio 2: tos en un momento determinado.
Desde mysql, como DBA, crea una nueva base Comprueba desde mysql que todas las opera-
de datos que se denomine misPeliculas y dale ciones se realizaron correctamente.
los permisos adecuados al usuario que estés
utilizando habitualmente.
2
Ejercicio 4: Ejercicio 5:
Modifica el programa Java que has desarrollado Modifica el programa Java que has desarrollado
en el ejercicio 3 para que también introduzca en el ejercicio 4 para que, además, permita in-
algunos datos en las diferentes relaciones que troducir interactivamente nuevas tuplas a al-
configuran tu esquema utilizando la sentencia macenar en las relaciones.
INSERT.
Clase ResultSet:
La solución que se adopta para acceder a todas
las tuplas de una relación consiste en realizar - next(): que nos permitirá comprobar si
un acceso tupla a tupla utilizando un bucle y quedan más tuplas por acceder y avanzar
mediante un elemento que denominamos cur- a la siguiente.
sor, que ya introdujimos en la práctica anterior, - getXXX(): que son un conjunto de méto-
y que nos da acceso a la tupla actual. dos( getInt(), getFloat(), …) que nos
permiten obtener los valores almacenados
Para realizar una consulta que devuelva varias
para los diferentes atributos de la relación
tuplas utilizaremos, por tanto, los siguientes que estamos explorando para la tupla a la
elementos: que está apuntando el cursor.
- Una instancia de la clase Statement, que
representará la consulta. Ejercicio 6:
- Una instancia de la clase ResultSet, que
Crea un programa Java que implemente alguna
representará el cursor.
de las consultas que diseñaste en el ejercicio 8
Consulta la documentación de ambas clases. de la práctica 2.
Las modificaciones de datos almacenados en Por defecto, cuando creamos un nuevo cursor
determinadas tuplas de la base de datos tam- en JDBC, éste es de sólo lectura, aunque pode-
bién es una operación que puede afectar a va- mos modificar su comportamiento para que
rias tuplas y, por tanto, también se realiza me- permita actualizar datos.
diante cursores.
3
Ejercicio 7:
Crea un programa Java que capitalice (ponga en
mayúscula la primera letra de cada palabra) los
títulos de todas las películas de tu base de da-
tos.
Uso de transacciones
Procedimientos almacenados
Desde JDBC también podemos ejecutar proce- ta la documentación de esta clase para com-
dimientos almacenados de nuestra base de da- prender su uso.
tos.
Ejercicio 9:
Para que esto sea posible, debemos disponer de
las herramientas necesarias para poder pasar Crea un programa Java que llame a alguno de
los parámetros de entrada desde Java al proce- los procedimientos almacenados que creaste en
dimiento almacenado y para extraer los resul- la práctica 3.
tados hacia variables Java.
Prueba, al menos, algún procedimiento almace-
Para realizar estos intercambios de información nado con parámetros de entrada y alguno con
se utiliza la clase callableStatement. Consul- parámetros de salida
4
Ejercicio final
Ejercicio 10:
Utilizando todo el trabajo realizado en esta práctica, crea un programa Java que permita gestionar tu
base de datos de películas: introducir nuevas películas, realizar alguna consulta, borrar datos, …
Resumen