2011-07-06 10 views
5

Ho la seguente sintassi nel mio codice, ma non funziona quando sto cercando di utilizzare l'operatore LIKE in JDBC. Funziona bene in questo modo, quando è proprio uguale:Come utilizzare l'operatore simile a MySQL in JDBC?

ResultSet resultSet = statement.executeQuery("SELECT * 
               FROM drawings 
               WHERE name = '"+ DT +"'"); 

Ma se voglio utilizzare l'operatore LIKE per la ricerca come un jolly, continuo a ricevere l'errore dicendo che "%" non è un carattere valido . Come posso usare correttamente l'operatore LIKE?

+0

Si prega di non dirmi che stai eseguendo query dalla tua pagina JSP. – Jacob

+0

Che aspetto ha la tua query LIKE? –

+0

query = ("SELECT * FROM drawings WHERE name LIKE '"% DT% "'"); – Sheeyla

risposta

15

Dai commenti:

query=("SELECT * FROM drawings WHERE name LIKE '"%DT%"'"); 

Questo non viene compilato. Supponendo che DT è una variabile, allora dovrebbe piuttosto assomigliare

query = "SELECT * FROM drawings WHERE name LIKE '%" + DT + "%'"; 

(prestare attenzione alla evidenziazione della sintassi, il % deve essere parte della stringa SQL!)

Tuttavia, concatenando utente - variabili di stringa controllate come quella in una query SQL mette le porte aperte SQL injectionattacks. Learn come utilizzare PreparedStatement e utilizzarlo.

String sql = "SELECT * FROM drawings WHERE name LIKE ?"; 
// ... 
preparedStatement = connection.prepareStatement(sql); 
preparedStatement.setString(1, "%" + DT + "%"); 
resultSet = preparedStatement.executeQuery(); 
// ... 
+2

Molte grazie Balus ... ora ho capito il tuo commento sulla JSP ... Ne terrei sicuramente conto ed evito di usare i tag sbagliati nelle mie domande ... molte grazie ancora, la tua risposta ha risolto un problema che avevo per 2 giorni, e sto anche implementando il preparatoStatement. Saluti – Sheeyla

Problemi correlati