Invocando executeQuery(sql)
invochi effettivamente un metodo su Statement
- non su PreparedStatement
. Quindi butti via il valore del parametro già assegnato ed esegui una query in cui il segnaposto ?
rimane non analizzato, quindi ottieni quell'errore.
Cambia
ResultSet results = state.executeQuery(sql);
a
ResultSet results = state.executeQuery();
e dovresti stare bene.
(E di causa
resultname = state2.executeQuery(sql2);
deve essere
resultname = state2.executeQuery();
anche)