2011-11-26 21 views

Odpowiedz

6

Musisz użyć wielu przygotowanych instrukcji lub po prostu utworzyć instrukcję w locie, sprawdzając jakie masz parametry.

Jak to:

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

Aktualizacja/Ostrzeżenie: Nie bezpośrednio dodać wartości parametrów do ciągu kwerendy, ale używać PreparedStatement itp zamiast. Jak pokazano powyżej, ciąg kwerendy powinien zawierać tylko symbole zastępcze dla wartości (np. ?), aby zapobiec atakom iniekcyjnym SQL.

Chodzi mi o to, nie rób następujące:

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

TKS ... to droga, która kiedyś, wydaje się, że „najczystszych” sposób –

+0

wiem, że istnieją ramy out tam do dynamicznego generowania zapytań, ale wydaje się to najlepszym rozwiązaniem w wielu przypadkach. +1 –

+0

, ale to podejście jest podatne na ataki typu sql injection. – aishu

Powiązane problemy