com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MySQL, kde najdete správnou syntaxi poblíž '? nebo MemberName =?' na řádku 1
MySQL nerozumí významu ?
v SQL dotazu. Je to skutečně neplatná syntaxe SQL. Nějak to tedy nebylo nahrazeno PreparedStatement
. A hádejte co?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Přepisujete připravený dotaz původním dotazem! Musíte zavolat argumentless PreparedStatement#executeQuery()
metoda namísto Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Bez ohledu na problém, váš kód uniká zdroje. DB je po několika hodinách vyčerpá a vaše aplikace spadne. Chcete-li tento problém vyřešit, musíte se řídit idiomem JDBC pro uzavření Connection
, Statement
a ResultSet
v finally
bloku try
blok, kde byly získány. Podívejte se na základní výukový program JDBC
pro více podrobností.