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.