En appelant executeQuery(sql)
vous invoquez en fait une méthode sur Statement
- pas sur PreparedStatement
. Donc, vous jetez la valeur de paramètre déjà affectée et exécutez une requête où l'espace réservé ?
reste non analysé - vous obtenez donc cette erreur.
Modifier
ResultSet results = state.executeQuery(sql);
à
ResultSet results = state.executeQuery();
et ça devrait aller.
(Et de cause
resultname = state2.executeQuery(sql2);
doit être
resultname = state2.executeQuery();
aussi)