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 java.util.List;
|
||||||
|
|
||||||
|
import es.palomafp.aadd.inm.dao.IActorDAO;
|
||||||
import es.palomafp.aadd.inm.dao.IRepartoDAO;
|
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.dao.impl.RepartoDaoJDBC;
|
||||||
import es.palomafp.aadd.inm.util.ConversorTiposDatosYFormatos;
|
import es.palomafp.aadd.inm.util.ConversorTiposDatosYFormatos;
|
||||||
import es.palomafp.aadd.inm.vo.Reparto;
|
import es.palomafp.aadd.inm.vo.Reparto;
|
||||||
@ -19,6 +21,16 @@ public class GestorCine {
|
|||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
GestorCine gc = new GestorCine();
|
GestorCine gc = new GestorCine();
|
||||||
gc.imprimirRepartoPeliculasActorTerminaEnT();
|
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() {
|
private void imprimirRepartoPeliculasActorTerminaEnT() {
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package es.palomafp.aadd.inm.dao.impl;
|
|||||||
|
|
||||||
import java.sql.CallableStatement;
|
import java.sql.CallableStatement;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.ResultSet;
|
import java.sql.Types;
|
||||||
|
|
||||||
import es.palomafp.aadd.inm.dao.IActorDAO;
|
import es.palomafp.aadd.inm.dao.IActorDAO;
|
||||||
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
|
import es.palomafp.aadd.inm.gestor.GestorConexionJDBC;
|
||||||
@ -22,16 +22,15 @@ public class ActorDaoJDBC implements IActorDAO {
|
|||||||
int numeroActores = 0;
|
int numeroActores = 0;
|
||||||
// try con recursos "cerrables": Connection, Statement, ResultSet
|
// try con recursos "cerrables": Connection, Statement, ResultSet
|
||||||
try (Connection conexion = GestorConexionJDBC.obtenerConexionJDBC();
|
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
|
// El parámetro de salida y el de entrada
|
||||||
cstmt.setInt(1, idPelicula);
|
cstmt.registerOutParameter(1, Types.INTEGER);
|
||||||
ResultSet resultado = cstmt.executeQuery();
|
cstmt.setInt(2, idPelicula);
|
||||||
|
|
||||||
if (resultado.next()) {
|
cstmt.execute();
|
||||||
return 0;
|
// Obtener el valor del parámetro de salida
|
||||||
|
numeroActores= cstmt.getInt(1);
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user