Tendrás que eliminar la query argumento de su executeQuery llamar. Si proporciona el parámetro, la consulta se ejecutará sin vincular ningún valor (consulte Declaración
para más detalles) - esta es la razón por la que la sintaxis (es decir, el ? ) no es válido.
Ejecute la consulta de esta manera:
ResultSet rst = st.executeQuery();
Como nota al margen:siempre debe envolver Connection , PreparedStatement y ResultSet con un probar-con-recursos bloque, por ej.
try (ResultSet rst = st.executeQuery()) {
// read the results
}
De esta manera puede estar seguro de que el ResultSet se cerrará pase lo que pase.