Ved at kalde executeQuery(sql)
du faktisk påberåber en metode på Statement
- ikke på PreparedStatement
. Så du smider den parameterværdi, der allerede er tildelt, og udfører en forespørgsel, hvor pladsholderen ?
forbliver unparsed - så du får den fejl.
Skift
ResultSet results = state.executeQuery(sql);
til
ResultSet results = state.executeQuery();
og du burde have det godt.
(Og af årsag
resultname = state2.executeQuery(sql2);
skal være
resultname = state2.executeQuery();
også)