Un PreparedStatement permite ejecutar consultas SQL con parámetros. Se usa para enviar consultas compiladas previamente a la base de datos con uno o más parámetros que se especifican dinámicamente antes de la ejecución. Un CallableStatement extiende las funcionalidades de PreparedStatement para permitir llamar a procedimientos almacenados, pasando y obteniendo parámetros de entrada, salida y entrada/salida.