2011-11-26 9 views

risposta

6

Dovresti utilizzare più istruzioni preparate o semplicemente creare una dichiarazione al volo, controllando quali parametri hai.

Ti piace questa:

String query = "SELECT * FROM table WHERE id=?"; 
if(nameParameter != null) { 
    query += " AND name=?"; //don't never ever directly add the value here 
} 
... 

Aggiornamento/Attenzione: Non aggiungere direttamente i valori dei parametri per la stringa di query ma utilizzare PreparedStatement e simili, invece. Come visualizzato sopra, la stringa di query dovrebbe contenere solo segnaposto per i valori (ad esempio ?) al fine di prevenire attacchi di SQL-injection.

Quello che voglio dire è, non faccio le seguenti:

if(nameParameter != null) { 
    //NEVER EVER, REALLY I MEAN IT, DON'T DO THIS 
    query += " AND name='" + nameParameter + "'"; 
} 
+0

TKS ... E 'il modo che ho usato, sembra il modo "pulito" –

+0

So che ci sono quadri fuori lì per la generazione di query dinamiche, ma questa sembra essere la soluzione migliore per molti casi. +1 –

+0

ma questo approccio è soggetto agli attacchi di SQL injection. – aishu

Problemi correlati