Vous devrez supprimer la query argument de votre executeQuery appel. Si vous fournissez le paramètre, la requête sera exécutée sans lier aucune valeur (voir Statement
pour plus de détails) - c'est pourquoi la syntaxe (c'est-à-dire le ? ) n'est pas valide.
Exécutez la requête comme ceci :
ResultSet rst = st.executeQuery();
En remarque :vous devez toujours envelopper Connection , PreparedStatement et ResultSet avec un essayez-avec-des-ressources bloquer, par ex.
try (ResultSet rst = st.executeQuery()) {
// read the results
}
De cette façon, vous pouvez être sûr que le ResultSet sera fermé quoi qu'il arrive.