Dengan menjalankan executeQuery(sql)
Anda benar-benar memanggil metode pada Statement
- tidak di PreparedStatement
. Jadi Anda membuang nilai parameter yang sudah ditetapkan dan menjalankan kueri di mana ?
. placeholder tetap tidak diuraikan - jadi Anda mendapatkan kesalahan itu.
Ubah
ResultSet results = state.executeQuery(sql);
ke
ResultSet results = state.executeQuery();
dan Anda akan baik-baik saja.
(Dan alasannya
resultname = state2.executeQuery(sql2);
perlu
resultname = state2.executeQuery();
juga)