cambios por CallableStatement
This commit is contained in:
parent
657ce22c20
commit
04a3d1021e
45
sql/procedimiento-y-funcion.sql
Normal file
45
sql/procedimiento-y-funcion.sql
Normal file
@ -0,0 +1,45 @@
|
||||
|
||||
|
||||
DELIMITER //
|
||||
|
||||
CREATE PROCEDURE obtenerRepartoPeliculasPorActor(IN p_patron_nombre_actor VARCHAR(100))
|
||||
BEGIN
|
||||
SELECT
|
||||
a.nombre AS nombre_actor,
|
||||
a.id_pais AS id_pais_actor,
|
||||
p.titulo AS titulo_pelicula,
|
||||
p.id_pais AS id_pais_pelicula,
|
||||
d.nombre AS nombre_director,
|
||||
d.id_pais AS id_pais_director,
|
||||
d.fecha_nacimiento AS fecha_nacimiento_director
|
||||
FROM reparto r
|
||||
JOIN actor a ON r.id_actor = a.identificador
|
||||
JOIN pelicula p ON p.identificador = r.id_pelicula
|
||||
JOIN director d ON p.id_director = d.identificador
|
||||
WHERE p.identificador IN (
|
||||
SELECT re.id_pelicula
|
||||
FROM reparto re
|
||||
JOIN actor ac ON re.id_actor = ac.identificador
|
||||
JOIN pelicula pe ON re.id_pelicula = pe.identificador
|
||||
WHERE ac.nombre LIKE p_patron_nombre_actor
|
||||
);
|
||||
END;
|
||||
//
|
||||
|
||||
CREATE FUNCTION obtenerNumeroActoresPelicula(p_id_pelicula INT)
|
||||
RETURNS INT
|
||||
DETERMINISTIC
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
DECLARE total_actores_pelicula INT;
|
||||
|
||||
SELECT COUNT(*) INTO total_actores_pelicula
|
||||
FROM reparto
|
||||
WHERE id_pelicula = p_id_pelicula;
|
||||
|
||||
RETURN total_actores_pelicula;
|
||||
END;
|
||||
//
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
@ -2,7 +2,9 @@ package es.palomafp.aadd.inm;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import es.palomafp.aadd.inm.dao.IActorDAO;
|
||||
import es.palomafp.aadd.inm.dao.IRepartoDAO;
|
||||
import es.palomafp.aadd.inm.dao.impl.ActorDaoJDBC;
|
||||
import es.palomafp.aadd.inm.dao.impl.RepartoDaoJDBC;
|
||||
import es.palomafp.aadd.inm.util.ConversorTiposDatosYFormatos;
|
||||
import es.palomafp.aadd.inm.vo.Reparto;
|
||||
@ -19,6 +21,16 @@ public class GestorCine {
|
||||
public static void main(String[] args) {
|
||||
GestorCine gc = new GestorCine();
|
||||
gc.imprimirRepartoPeliculasActorTerminaEnT();
|
||||
|
||||
gc.imprimirNumeroActoresPelicula();
|
||||
}
|
||||
|
||||
private void imprimirNumeroActoresPelicula() {
|
||||
IActorDAO iActorDAO = new ActorDaoJDBC();
|
||||
int idPelicula = 1; // Ejemplo: película con id 1
|
||||
System.out.println("Imprimir el número de actores en la película con id " + idPelicula);
|
||||
int numeroActores = iActorDAO.obtenerNumeroActoresPelicula(idPelicula);
|
||||
System.out.println("Número de actores en la película con id " + idPelicula + ": " + numeroActores);
|
||||
}
|
||||
|
||||
private void imprimirRepartoPeliculasActorTerminaEnT() {
|
||||
|
||||
@ -2,7 +2,7 @@ package es.palomafp.aadd.inm.dao.impl;
|
||||
|
||||
import java.sql.CallableStatement;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Types;
|
||||
|
||||
import es.palomafp.aadd.inm.dao.IActorDAO;
|
||||
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
|
||||
@ -22,16 +22,15 @@ public class ActorDaoJDBC implements IActorDAO {
|
||||
int numeroActores = 0;
|
||||
// try con recursos "cerrables": Connection, Statement, ResultSet
|
||||
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
||||
CallableStatement cstmt = conexion.prepareCall("{call obtenerNumeroActoresPelicula(?)}");) {
|
||||
CallableStatement cstmt = conexion.prepareCall("{? = call obtenerNumeroActoresPelicula(?)}");) {
|
||||
|
||||
// El parámetro es el patrón por el que se va a buscar
|
||||
cstmt.setInt(1, idPelicula);
|
||||
ResultSet resultado = cstmt.executeQuery();
|
||||
// El parámetro de salida y el de entrada
|
||||
cstmt.registerOutParameter(1, Types.INTEGER);
|
||||
cstmt.setInt(2, idPelicula);
|
||||
|
||||
if (resultado.next()) {
|
||||
return 0;
|
||||
|
||||
}
|
||||
cstmt.execute();
|
||||
// Obtener el valor del parámetro de salida
|
||||
numeroActores= cstmt.getInt(1);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user