com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MySQL-serverversion för rätt syntax att använda nära '? eller MemberName =?' på rad 1
MySQL förstår inte innebörden av ?
i SQL-frågan. Det är verkligen ogiltig SQL-syntax. Så på något sätt har den inte ersatts av PreparedStatement
. Och gissa vad?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Du åsidosätter den förberedda frågan med den ursprungliga frågan! Du måste anropa den argumentlösa PreparedStatement#executeQuery()
metod istället för Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Utan samband med problemet läcker din kod resurser. DB kommer att ta slut efter flera timmar och din applikation kommer att krascha. För att fixa detta måste du följa JDBC-formspråket för att stänga Connection
, Statement
och ResultSet
i finally
block av try
block där de har förvärvats. Kontrollera JDBC grundläggande självstudier
för mer information.