Door executeQuery(sql) . aan te roepen je roept daadwerkelijk een methode aan op Statement - niet op PreparedStatement . Dus je gooit de parameterwaarde die al is toegewezen weg en voert een query uit waarbij de tijdelijke aanduiding ? blijft ongeparseerd - dus je krijgt die fout.
Wijzigen
ResultSet results = state.executeQuery(sql);
naar
ResultSet results = state.executeQuery();
en het zou goed moeten komen.
(En van reden
resultname = state2.executeQuery(sql2);
moet zijn
resultname = state2.executeQuery();
ook)