sql >> Databáze >  >> RDS >> Mysql

MySQLSyntaxErrorException blízko ? při pokusu o provedení PreparedStatement

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í.



  1. Jak Bootstrap MySQL nebo MariaDB Galera Cluster - Aktualizováno

  2. Jak zkontrolovat, zda existuje uložená procedura před jejím vytvořením

  3. Doplňte řetězec úvodními nulami, aby měl v SQL Server 2008 3 znaky

  4. Jak nastavíte propojený server s databází Oracle na SQL 2000/2005?