Genom att anropa executeQuery(sql)
du anropar faktiskt en metod på Statement
- inte på PreparedStatement
. Så du kastar bort parametervärdet som redan tilldelats och kör en fråga där platshållaren ?
förblir oparerad - så du får det felet.
Ändra
ResultSet results = state.executeQuery(sql);
till
ResultSet results = state.executeQuery();
och du borde klara dig.
(Och av orsaken
resultname = state2.executeQuery(sql2);
måste vara
resultname = state2.executeQuery();
likaså)