Ще трябва да премахнете query аргумент от вашия executeQuery обадете се. Ако предоставите параметъра, заявката ще бъде изпълнена без обвързване на стойности (вижте Изявление
за подробности) - ето защо синтаксисът (т.е. ? ) е невалидно.
Изпълнете заявката по следния начин:
ResultSet rst = st.executeQuery();
Като странична забележка:винаги трябва да обвивате Connection , PreparedStatement и ResultSet с опитайте с ресурси блок, напр.
try (ResultSet rst = st.executeQuery()) {
// read the results
}
По този начин можете да сте сигурни, че ResultSet ще бъде затворен, независимо какво се случи.