Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programación de Bases de Datos, Ejercicios de Programación de Bases de Datos

Programación de Bases de Datos

Tipo: Ejercicios

2019/2020

Subido el 07/09/2022

AlfinduL
AlfinduL 🇪🇸

5 documentos

1 / 5

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Uso de bases de datos
Práctica 3: Programación mediante SQL
En esta tercera práctica usaremos la base de datos (BD) con la que se ha trabajado en
prácticas anteriores (en concreto, usaremos el esquema de la BD de la práctica 2) y
accederemos desde Java usando JDBC.
Os facilitamos un código inicial que tenéis que evolucionar para resolver los ejercicios
propuestos. El código compila correctamente pero es incompleto: no hace lo que se supone
que tiene que hacer. Vuestro trabajo es completar el digo en aquellas partes que os hemos
dejado preparadas. Dentro del código hemos dejado comentarios con el prefijo TODO (de “to
do” en inglés, “para hacer”). Es una convención. No hace falta que borréis estos comentarios,
os indican donde tenéis que añadir vuestro código.
La complejidad del código a desarrollar no es grande y podéis usar cualquier entorno de
desarrollo Java (Eclipse, NetBeans, IntelliJ IDEA, etc. o simplemente un editor de texto como
por ejemplo Notepad, Ultraedit, etc.) para realizarla. No es el objetivo de esta práctica que
aprendáis ningún entorno de programación en concreto y, por lo tanto, os recomendamos
trabajar con aquel con el que estéis familiarizados para que no os atasquéis en este punto. Por
otro lado, podéis usar cualquier versión de Java superior a 1.5.
En cuanto a la organización del código de la práctica, veréis que todo el código Java se
encuentra en el directorio /src/main/java, mientras que los ficheros adicionales que se utilizan
se encuentran en el directorio /src/main/resources.
Dentro del código Java suministrado hay el paquete edu.uoc.practica.bd.util que contiene varias
clases de utilidad que se utilizan para tratar la presentación de listados, la lectura de ficheros o
el tratamiento de arrays. De estas clases, sólo hará falta que modifiquéis la clase DBAccessor,
que es la encargada de obtener las conexiones a la base de datos. Los parámetros que usan
para establecer las conexiones (servidor, puerto, usuario, etc.) se encuentran en el fichero
/src/main/resources/db.properties.
En todos los casos tenéis que pensar cuál es el mejor tipo de sentencia JDBC que podéis usar
(Statement,PreparedStatement,CallableStatement, etc.) así como de qué manera tenéis que
tratar las transacciones (commit yrollback) y qué tenéis que hacer con las excepciones.
Siempre tenéis que garantizar que se cierran todos los recursos.
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Programación de Bases de Datos y más Ejercicios en PDF de Programación de Bases de Datos solo en Docsity!

Uso de bases de datos

Práctica 3: Programación mediante SQL

En esta tercera práctica usaremos la base de datos (BD) con la que se ha trabajado en prácticas anteriores (en concreto, usaremos el esquema de la BD de la práctica 2) y accederemos desde Java usando JDBC. Os facilitamos un código inicial que tenéis que evolucionar para resolver los ejercicios propuestos. El código compila correctamente pero es incompleto: no hace lo que se supone que tiene que hacer. Vuestro trabajo es completar el código en aquellas partes que os hemos dejado preparadas. Dentro del código hemos dejado comentarios con el prefijo TODO (de “to do” en inglés, “para hacer”). Es una convención. No hace falta que borréis estos comentarios, os indican donde tenéis que añadir vuestro código. La complejidad del código a desarrollar no es grande y podéis usar cualquier entorno de desarrollo Java (Eclipse, NetBeans, IntelliJ IDEA, etc. o simplemente un editor de texto como por ejemplo Notepad, Ultraedit, etc.) para realizarla. No es el objetivo de esta práctica que aprendáis ningún entorno de programación en concreto y, por lo tanto, os recomendamos trabajar con aquel con el que estéis familiarizados para que no os atasquéis en este punto. Por otro lado, podéis usar cualquier versión de Java superior a 1.5. En cuanto a la organización del código de la práctica, veréis que todo el código Java se encuentra en el directorio /src/main/java , mientras que los ficheros adicionales que se utilizan se encuentran en el directorio /src/main/resources. Dentro del código Java suministrado hay el paquete edu.uoc.practica.bd.util que contiene varias clases de utilidad que se utilizan para tratar la presentación de listados, la lectura de ficheros o el tratamiento de arrays. De estas clases, sólo hará falta que modifiquéis la clase DBAccessor , que es la encargada de obtener las conexiones a la base de datos. Los parámetros que usan para establecer las conexiones (servidor, puerto, usuario, etc.) se encuentran en el fichero /src/main/resources/db.properties. En todos los casos tenéis que pensar cuál es el mejor tipo de sentencia JDBC que podéis usar ( Statement , PreparedStatement , CallableStatement , etc.) así como de qué manera tenéis que tratar las transacciones ( commit y rollback ) y qué tenéis que hacer con las excepciones. Siempre tenéis que garantizar que se cierran todos los recursos.

Para la correcta ejecución de la tercera parte de la práctica, hay que volver a crear la base de datos ejecutando los scripts siguientes, que os facilitamos junto al enunciado:

  1. create_db.sql
  2. insert_db.sql Es importante que antes de cada ejercicio, borréis el contenido de la base de datos y volváis a insertar los registros del fichero inserts_db.sql , para evitar interferencias entre los ejercicios. Nota importante: Dado que las diferentes versiones de PostgreSQL aceptan o no diferentes variantes de sintaxis de sus sentencias, sólo se considerarán válidas aquellas respuestas que obedezcan estrictamente las sentencias SQL explicadas a los módulos teóricos de la asignatura.

Pregunta 1 (50% puntuación)

Enunciado

Se pide hacer un programa que liste la información de la tabla REPORT_BAND construida y rellenada en el primer ejercicio de la entrega de la segunda parte de la práctica. En la carpeta sql/PR2 del zip que adjuntamos junto al enunciado, encontraréis el código sql necesario para construir y rellenar la tabla REPORT_BAND. En concreto se quiere un listado de esta tabla ordenado de forma descendente por número de álbumes. La cabecera será: Id band Num instruments Num members alive Big albums Num short songs ======= =============== ================= ========== =============== Si la tabla está vacía se dará un mensaje “List without data”. Se tendrá que realizar la gestión de errores necesaria y en el supuesto de que se produzcan, se tendrá que devolver un error genérico “ERROR: List not available”.

Pregunta 2 (50% puntuación)

Enunciado

Leer de un fichero y hacer INSERT o UPDATE.

Nos hacen llegar un fichero llamado exercise2.data, para ir actualizando información de nuestra base de datos. Este fichero contiene datos nuevos a insertar en la base de datos. El fichero se carga en el sistema tal como se detalla a continuación. La primera línea del fichero es un comentario (que el código que os damos ya se encarga de ignorar) y que contiene la descripción de cada uno de los elementos del fichero, que van separados por comas. Las líneas posteriores de este fichero son los datos de los grupos con los cuales se actualizarán las tablas BAND y MEMBER. Concretamente, hace falta que hagáis un programa que, por cada una de estas líneas, haga lo siguiente:

  1. Actualice los datos del grupo si el id_band existe en la base de datos. En caso contrario, insertará un nuevo grupo con los datos del fichero.
  2. Registrar la participación del músico en el grupo en el supuesto de que el músico no esté ya registrado como miembro del grupo con el instrumento que aparece en el fichero de entrada. Hay que controlar los posibles errores de ejecución, incluidas las excepciones que puedan producirse por restricciones violadas, como por ejemplo: ● El id_musician no existe. ● Valores incorrectos para una columna. En estos casos, hay que abortar la carga del fichero, y echar atrás los cambios hechos hasta el momento.

Criterios de evaluación

● Os recomendamos compilar y ejecutar el fichero que entreguéis, por si habéis hecho alguna modificación de última hora (reordenación del código, algún comentario adicional, etc.). ● No se puntuará la entrega de ningún fichero si genera errores de compilación. ● Se valorará la corrección en el uso de las clases del JDBC. ● Que las operaciones INSERT y UPDATE se ejecuten haciendo lo que pide el ejercicio. ● Que se haga correctamente el Rollback. ● Que se haga el cierre de todos los recursos. ● Se tendrá en cuenta en la calificación que el código entregado presente comentarios que permitan comprender su funcionamiento. ● La calificación también se verá penalizada si os dejáis “espías” a lo largo del código. ● Para obtener la calificación máxima se tendrá en cuenta tanto la claridad del código como la eficiencia del mismo. ● Igualmente, para obtener la máxima calificación, se tendrán que dar los ejemplos, que muestren el funcionamiento del programa en todas las situaciones pedidas, en el documento de explicaciones que tenéis que librar.