Você terá que remover a
query argumento do seu executeQuery ligar. Se você fornecer o parâmetro, a consulta será executada sem vincular nenhum valor (consulte Instrução
para detalhes) - é por isso que a sintaxe (ou seja, o ? ) é inválido. Execute a consulta assim:
ResultSet rst = st.executeQuery();
Como uma observação lateral:você deve sempre envolver
Connection , PreparedStatement e ResultSet com um experimentar com recursos bloco, por exemplo try (ResultSet rst = st.executeQuery()) {
// read the results
}
Dessa forma, você pode ter certeza de que o
ResultSet será fechado não importa o que aconteça.