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 + "'";
}
TKS ... E 'il modo che ho usato, sembra il modo "pulito" –
So che ci sono quadri fuori lì per la generazione di query dinamiche, ma questa sembra essere la soluzione migliore per molti casi. +1 –
ma questo approccio è soggetto agli attacchi di SQL injection. – aishu