com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:U heeft een fout in uw SQL-syntaxis; controleer de handleiding die overeenkomt met uw MySQL-serverversie voor de juiste syntaxis om te gebruiken in de buurt van '? of Lidnaam =?' op regel 1
MySQL begrijpt de betekenis van ?
in de SQL-query. Het is inderdaad een ongeldige SQL-syntaxis. Dus op de een of andere manier is het niet vervangen door PreparedStatement
. En raad eens?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
U overschrijft de voorbereide query met de originele query! U moet de argumentloze PreparedStatement#executeQuery()
methode in plaats van Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Los van het probleem, lekt uw code bronnen. De DB zal na enkele uren opraken en uw toepassing zal crashen. Om dit op te lossen, moet u het JDBC-idioom van het sluiten van Connection
volgen , Statement
en ResultSet
in de finally
blok van de try
blok waar ze zijn verkregen. Bekijk de JDBC-basishandleiding
voor meer details.