Ejercicios de la UD10¶
Paso previo inicial [REQUERIDO!]
Para la realización de los ejercicios deberás crear una base de datos en tu Sistema Gestor de Bases de Datos [SGBD] (MySql/MariaDB) de nombre prXXYY_tuNombre ( donde XXYY hace referencia al curso en mi caso pr2526_DavidMartinez) .
Tu SGBD puedes escogerlo tu mismo, mi recomendación es que uses AWS para tener tu base de datos siempre disponible en la nube.
De tu SGBD necesitarás saber:
username: tu nombre de usuariopassword: tu contraseñaurl: dirección donde se encuentra tu SGBDport: puerto en el que escucha tu SGBDdatabase_name: nombre de la BBDD (un SGBD puede gestionar más de una Base de Datos, en mi casopr2425_DavidMartinez)
Descarga el fichero sql tablas.sql e impórtalas en tu SGBD. Para ello, ve a la pestaña de phpMyAdmin Importa, selecciona el fichero descargado anteriormente y ejecútalo.
Actividades¶
UD10_00_GestionProveedores¶
Tenemos nuestra base de datos tablas.sql que almacena información sobre proveedores. La tabla proveedores tiene las siguientes columnas:
id: Identificador único del empleado (entero). (AUTOINCREMENTAL)nombre: Nombre del empleado (cadena de texto).fecha_ingreso: Fecha de ingreso en el sistema (fecha)salario: Salario del empleado (decimal).
Crea un ejercicio de nombre UD10_00_GestionProveedores en el que se liste todos los proveedores.
UD10_01_GestionEmpleados¶
Tenemos nuestra base de datos tablas.sql que almacena información sobre empleados. La tabla empleados tiene las siguientes columnas:
id: Identificador único del empleado (entero). (AUTOINCREMENTAL)nombre: Nombre del empleado (cadena de texto).salario: Salario del empleado (decimal).
Es escribir un programa UD10_01_GestionEmpleados que realice las siguientes operaciones utilizando diferentes tipos de resultado y opciones de concurrencia:
listarEmpleados: Mostrar en la consola todos los empleados y sus salarios.actualizarSalarios: Incrementar el salario de todos los empleados en un 10%.eliminarEmpleados: Eliminar todos los empleados cuyo salario sea menor que 3000€.
Consejo: En el
mainejecuta por este orden:¶
listarEmpleadosactualizarEmpleadoslistarEmpleadoseliminarEmpleadoslistarEmpleadosPara probar...¶
Puedes implementar cada operación utilizando un tipo de resultado y opción de concurrencia diferente para familiarizarte con su uso.
No olvides manejar las excepciones
SQLExceptionadecuadamente.Por ejemplo, podrías probar las siguientes operaciones:
- Lista todos los empleados junto con sus salarios utilizando un
ResultSetde tipoTYPE_SCROLL_SENSITIVEy opción de concurrenciaCONCUR_READ_ONLY.- Actualiza los salarios de todos los empleados incrementándolos en un 10% utilizando un ResultSet de tipo
TYPE_FORWARD_ONLYy opción de concurrenciaCONCUR_UPDATABLE.- Elimina todos los empleados cuyo salario sea menor a 3000€ utilizando un
Statementestándar sin necesidad de unResultSet.No olvides:¶
Manejar las excepciones
SQLExceptionadecuadamente.Ajustar la cadena de conexión a tu base de datos y reemplazar "usuario" y "contraseña" con las credenciales adecuadas.
UD10_02_GestionProductos¶
En la base de datos tablas.sql se almacena información sobre productos. La tabla productos tiene las siguientes columnas:
id: Identificador único del producto (entero). (AUTOINCREMENTAL)nombre: Nombre del producto (cadena de texto).precio: Precio del producto (decimal).
Tu tarea es escribir un programa UD10_02_GestionProductos que realice las siguientes operaciones utilizando los métodos proporcionados:
mostrarProductosPorPagina(): Mostrar una página de productos cada vez que el usuario lo solicite. Cada página debe contener 5 productos. Implementa las funciones para mover el cursor a la primera página, página siguiente, página anterior, última página y una página específica utilizando el métodoabsolute(int row).buscarProductoPorNombre(String nombre): Permitir al usuario buscar un producto por su nombre. Utiliza el métodorelative(int registros)para desplazar el cursor hacia adelante o hacia atrás según la coincidencia del nombre.
UD10_03_GestionAlumnos¶
En la base de datos tablas.sql se almacena información sobre alumnos. La tabla alumnos tiene las siguientes columnas:
id: Identificador único del alumno (entero). (AUTOINCREMENTAL)nombre: Nombre del alumno (cadena de texto).edad: Edad del alumno (entero).
Tu tarea es escribir un programa UD10_03_GestionAlumnos que realice las siguientes operaciones utilizando los métodos proporcionados:
- Mostrar la información del alumno más joven y más viejo: Utiliza los métodos
first()ylast()para mover el cursor a la primera y última fila respectivamente y obtener la información del alumno más joven y más viejo. - Desplazarse por los alumnos en orden inverso de edad: Muestra la información de los alumnos en orden inverso de edad. Utiliza el método
previous()para desplazarte hacia atrás a través de los registros.
UD10_04_GestionLibros¶
En la base de datos tablas.sql se almacena información sobre libros. La tabla libros tiene las siguientes columnas:
id: Identificador único del libro (entero). (AUTOINCREMENTAL)titulo: Título del libro (cadena de texto).autor: Nombre del autor del libro (cadena de texto).anio_publicacion: Año de publicación del libro (entero).
Tu tarea es escribir un programa UD10_04_GestionLibros que realice las siguientes operaciones utilizando los métodos proporcionados:
mostrarLibrosPorDecada(int decada): Permite al usuario ingresar una década y mostrar todos los libros publicados en esa década.
Sugerencia en este método:¶
Puedes realizar el método
mostrarLibrosPorDecada()de dos formas:
- Utiliza el método
createStatement()para crear elResultsetcon el atributoResultSet.TYPE_SCROLL_INSENSITIVE. Utiliza dentro los métodosafterLast()yprevious()para mover el cursor al final y luego retroceder, así puedes comenzar desde la última fila.- Utiliza el método
preparedStatement(sql)con una consulta en la que se listen los libros comprendidos en una década y ordenados de forma descendente por elanio_publiacion.
buscarLibroPorAutor(String autor): Permite al usuario ingresar el nombre de un autor y muestra todos los libros escritos por ese autor.
Sugerencia en este método:¶
Puedes realizar el método
buscarLibroPorAutor()de dos formas:
Utiliza el método
createStatement()para crear elResultsetcon el atributoResultSet.TYPE_SCROLL_INSENSITIVE. Utiliza dentro el métodorelative(int registros)para desplazarte a través de los registros según las coincidencias del autor.Utiliza el método
preparedStatement(sql)con una consulta en la que se listen los libros que contengan la cadena autor dentro del campo autor.
UD10_05_GestionVentas¶
En la base de datos tablas.sql se almacena información sobre ventas. La tabla ventas tiene las siguientes columnas:
id: Identificador único de la venta (entero). (AUTOINCREMENTAL)producto: Nombre del producto vendido (cadena de texto).cantidad: Cantidad de productos vendidos (entero).total: Total de la venta (decimal).
Tu tarea es escribir un programa UD10_05_GestionVentas que realice las siguientes operaciones utilizando los métodos proporcionados:
- Calcular el total de ventas: Utiliza el método
next()para recorrer todas las ventas y sumar los totales para obtener el total general de ventas. - Buscar ventas por producto: Permite al usuario ingresar el nombre de un producto y muestra todas las ventas asociadas a ese producto. Utiliza el método
relative(int registros)para desplazarte a través de los registros según las coincidencias del producto.
UD10_06_GestionPedidos¶
En la base de datos tablas.sql se almacena información sobre pedidos. La tabla pedidos tiene las siguientes columnas:
id: Identificador único del pedido (entero). (AUTOINCREMENTAL)cliente: Nombre del cliente que realizó el pedido (cadena de texto).producto: Nombre del producto pedido (cadena de texto).cantidad: Cantidad del producto solicitada en el pedido (entero).fecha: Fecha en que se realizó el pedido (fecha).
Tu tarea es escribir un programa UD_06_GestionPedidos que realice las siguientes operaciones utilizando los métodos proporcionados:
- Listar pedidos por cliente: Permite al usuario ingresar el nombre de un cliente y mostrar todos los pedidos realizados por ese cliente. Utiliza el método
relative(int registros)para desplazarte a través de los registros según las coincidencias del cliente. - Buscar pedidos por fecha: Permite al usuario ingresar una fecha y mostrar todos los pedidos realizados en esa fecha. Utiliza el método
afterLast()yprevious()para mover el cursor al final y luego retroceder, así puedes comenzar desde la última fila.
UD10_07_GestionEmpleados (continuación)¶
Continuando con el ejercicio de gestión de empleados, copia el programa UD10_01_GestionEmpleados, cambia el nombre a UD10_07_GestionEmpleados y agrega algunas funcionalidades adicionales:
- Mostrar información del empleado por ID: Permite al usuario ingresar el ID de un empleado y muestra toda la información relacionada con ese empleado. Utiliza el método
absolute(int row)para posicionarte en el registro del empleado especificado. - Buscar empleados por salario: Permite al usuario ingresar un rango de salarios y mostrar todos los empleados cuyo salario esté dentro de ese rango. Utiliza el método
next()para recorrer todas las filas y filtrar los empleados según el criterio de salario.
UD10_08_GestionEstudiantes¶
En la base de datos tablas.sql se almacena información sobre estudiantes. La tabla estudiantes tiene las siguientes columnas:
id: Identificador único del estudiante (entero). (AUTOINCREMENTAL)nombre: Nombre del estudiante (cadena de texto).edad: Edad del estudiante (entero).promedio: Promedio de calificaciones del estudiante (decimal).
Tu tarea es escribir un programa UD_08_GestionEstudiantes que realice las siguientes operaciones utilizando los métodos proporcionados:
- Mostrar la posición actual del estudiante: Muestra la posición del estudiante actual en el conjunto de resultados. Utiliza el método
getRow()para obtener el número de registro actual. - Validar la posición del cursor: Verifica si el cursor está antes del primer registro, en el primer registro, en el último registro o después del último registro. Utiliza los métodos
isBeforeFirst(),isFirst(),isLast()eisAfterLast()para realizar estas verificaciones.
UD10_09_GestionProductos (continuación)¶
Continuando con el ejercicio UD10_02_GestionProductos, copia el programa y cambia el nombre a UD10_09_GestionProductos y agrega algunas funcionalidades adicionales:
- Mostrar el número total de productos: Muestra el número total de productos en la base de datos. Utiliza el método
getRow()para obtener el número de registro actual ylast()para mover el cursor a la última fila. - Verificar si hay productos disponibles: Verifica si hay algún producto disponible en la base de datos. Utiliza los métodos
isBeforeFirst()eisAfterLast()para determinar si el cursor está antes del primer registro o después del último registro, respectivamente.
UD10_10_GestionEmpleados (continuación)¶
Continuando con el ejercicio de gestión de empleados UD10_07_GestionEmpleados haz una copia y nómbralo UD10_10_GestionEmpleados y agrega algunas funcionalidades adicionales:
- Verificar si hay empleados en la base de datos: Verifica si hay algún empleado registrado en la base de datos. Utiliza los métodos
isBeforeFirst()eisAfterLast()para determinar si el cursor está antes del primer registro o después del último registro, respectivamente. - Mostrar el primer empleado: Muestra la información del primer empleado en la base de datos. Utiliza el método
first()para mover el cursor al primer registro y luego muestra la información del empleado.
UD10_11_GestionVendedores¶
En la base de datos tablas.sql se almacena información sobre vendedores. La tabla vendedores tiene las siguientes columnas:
id: Identificador único del cliente (entero). (AUTOINCREMENTAL)nombre: Nombre del cliente (cadena de texto).fecha_ingreso: Fecha de ingreso en el sistema (fecha)salario: Salario del vendedor (decimal).
Tu tarea es escribir un programa UD10_11_GestionVendedores que realice las siguientes operaciones utilizando los métodos proporcionados:
- Mostrar la posición actual del vendedor: Muestra la posición actual del vendedor en el conjunto de resultados. Utiliza el método
getRow()para obtener el número de registro actual. - Mostrar información del último cliente: Muestra la información del último cliente en la base de datos. Utiliza el método
last()para mover el cursor al último registro y luego muestra la información del cliente.