Oświadczenie jestJak radzić sobie z (być może) wartościami pustymi w PreparedStatement?
SELECT * FROM tableA WHERE x = ?
a parametr jest włożona przez java.sql.PreparedStatement „instr”
stmt.setString(1, y); // y may be null
Jeśli y
jest null, instrukcja zwraca nie wierszy w każdym przypadku, ponieważ jest zawsze x = null
false (powinno być x IS NULL
). Jednym rozwiązaniem byłoby
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)
Ale wtedy trzeba ustawić ten sam parametr dwukrotnie. Czy istnieje lepsze rozwiązanie?
Dzięki!
Nie używam przygotowanych wyciągów. Używam ciągów SQL, a następnie zamieniam '= NULL' na' Is Null' w ciągu SQL. Działa jak marzenie. –
To nie jest bezpieczne i może być podatne na ataki przy użyciu wstrzyknięć. – aioobe