0% encontró este documento útil (0 votos)
2 vistas5 páginas

Practica 5

La práctica se centra en el uso de JDBC para acceder a bases de datos desde programas Java, abarcando la creación de conexiones, ejecución de sentencias SQL y manejo de transacciones. Los estudiantes aprenderán a implementar consultas, modificaciones y procedimientos almacenados, así como a gestionar excepciones y parámetros entre Java y SQL. Se espera que al final, los alumnos sean capaces de desarrollar un programa completo para gestionar una base de datos de películas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas5 páginas

Practica 5

La práctica se centra en el uso de JDBC para acceder a bases de datos desde programas Java, abarcando la creación de conexiones, ejecución de sentencias SQL y manejo de transacciones. Los estudiantes aprenderán a implementar consultas, modificaciones y procedimientos almacenados, así como a gestionar excepciones y parámetros entre Java y SQL. Se espera que al final, los alumnos sean capaces de desarrollar un programa completo para gestionar una base de datos de películas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Sistemas de Información

Práctica 5 Curso 2024/25 3º curso

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

Los accesos a bases de datos desde un lenguaje


Ejercicio 1:
anfitrión se realizan a través de conexiones. Por
tanto, nuestro primer objetivo debe ser estable- Crea un proyecto Java en Eclipse y añádele la
cer una conexión y gestionar adecuadamente librería que contiene el driver JDBC.
los posibles problemas que se puedan producir,
Escribe un programa Java que sea capaz de es-
y que en Java se manifestarán mediante excep-
tablecer una conexión a una base de datos, cuyo
ciones.
nombre tomará como parámetro por línea de
Las conexiones (Connection) se construyen sobre comandos, y de liberar dicha conexión. El pro-
un gestor (DriverManager) que se encarga de grama gestionará adecuadamente las excepcio-
gestionar las comunicaciones con una determi- nes que se puedan producir.
nada fuente de datos. Por tanto, para realizar
Prueba el programa con una base de datos exis-
este ejercicio deberías consultar la documenta-
tente y con una que no exista. Prueba también a
ción (javadoc) de estas dos clases.
conectarte utilizando un usuario y/o una clave
incorrectas.

Ejecutando sentencias

Una vez que tenemos establecida correctamente


una conexión con una base de datos, podemos
ejecutar sentencias SQL sobre ella desde nues-
tro programa Java, tal como hemos hecho hasta
ahora en nuestro intérprete mysql. Ejercicio 3:
Para ejecutar sentencias SQL que supongan Vuelve a crear el esquema de base de datos que
modificaciones sobre una base de datos, bien diseñaste en los 7 primeros ejercicios de la prác-
sea del esquema, bien sea de los datos almace- tica 2 sobre esta nueva base de datos, pero en
nados, se utiliza una instancia de la clase Java esta ocasión realizando todas las operaciones
Statement. En concreto, debemos utilizar el desde un programa Java en vez de desde mysql.
método executeUpdate(). Podemos utilizar la
Utiliza como base el programa que realizaste en
misma instancia de Statement para ejecutar
varias sentencias. la práctica 1 de la presente práctica.

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.

Consultando bases de datos vía JDBC

Consultas mediante cursores

A la hora de obtener datos almacenados en la Clase Statement:


base de datos nos encontramos con el problema
de no saber, en tiempo de diseño, cuántas tu- - executeQuery(): que ejecutará la consul-
plas va a tener el resultado de una consulta, ya ta y nos devolverá un cursor (instancia de
que dicho número varía con el tiempo. ResultSet) al resultado de la consulta.

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.

Los métodos de más interés en este momento


para nosotros de estas dos clases son:

Modificación de datos mediante cursores

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

En la práctica anterior aprendimos a utilizar Deshabilita la gestión automática de transaccio-


transacciones para asegurar la integridad de un nes, comienza manualmente una nueva
conjunto de sentencias SQL. transacción, realiza un par de operaciones que
supongan una modificación de los datos alma-
En JDBC las transacciones se controlan de ma-
cenados en tu base de datos y, antes de concluir
nera similar: Cuando creamos una conexión,
la transacción, simula un problema en tu
ésta, por defecto, toma cada sentencia como una
SGBD1.
transacción. Para gestionar nosotros las transac-
ciones debemos desactivar ese comportamiento Una vez recuperado el SGBD observa qué ha
por defecto (auto-commit) y cerrar explícitamen- pasado con los cambios que habías realizado.
te las transacciones. La clase Connection, que
Repite el experimento, pero simulando el pro-
gestiona nuestra sesión con la base de datos nos
blema después de confirmar la transacción.
proporciona métodos para realizar estas opera-
ciones.
1 Para simular un problema, puedes apagar la máquina en la que
Ejercicio 8: estés ejecutando el SGBD. Si estás trabajando con tu máquina, de
forma alternativa puedes matar el proceso gestor como su-
perusuario.
Repite el ejercicio 9 de la práctica 3, pero esta
vez desde un programa Java. Dicho ejercicio
decía:

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

Los principales resultados esperados de esta práctica son:


- Ser capaces de acceder a bases de datos desde programas escritos en Java.
- Aprender cómo las diferentes funcionalidades proporcionadas por SQL se integran en un lenguaje anfitrión.
- Intercambiar parámetros de procedimientos almacenados entre variables Java y variables SQL.

Como trabajo adicional del alumno, se proponen las siguientes líneas:


- Trabaja en completar tu programa Java para gestionar la base de datos de películas, de tal manera que soporte aque-
llas operaciones que consideres habituales.
- Analiza la conveniencia de realizar determinados conjuntos de operaciones como procedimientos almacenados SQL
o bien como métodos Java.
- Estudia la utilidad de la clase PreparedStatement.
- Prueba las diferentes opciones de los cursores que permiten realizar movimiento libre a través de las tuplas de una
relación (avanzar, retroceder, saltar, …)

También podría gustarte