L'affermazione èCome gestire (forse) valori null in una PreparedStatement?
SELECT * FROM tableA WHERE x = ?
e il parametro viene inserito tramite java.sql.PreparedStatement 'stmt'
stmt.setString(1, y); // y may be null
Se y
è nullo, l'istruzione restituisce alcuna riga in ogni caso, perché è sempre x = null
falso (dovrebbe essere x IS NULL
). Una soluzione potrebbe essere
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)
Ma poi devo impostare due volte lo stesso parametro. C'è una soluzione migliore?
Grazie!
Non uso istruzioni preparate. Uso le stringhe SQL e quindi sostituisco '= NULL' con' Is Null' nella stringa SQL. Funziona come un fascino. –
Questo non è sicuro dal tipo e potenzialmente vulnerabile agli attacchi per iniezione. – aioobe