Nic nie jest = NULL
. Jeśli wpiszesz select * from test where value=NULL
do interaktywnego oceniania zapytań, nic nie otrzymasz. JDBC nie przepisuje twojego wyrażenia, po prostu podmienia wartości.
Musisz użyć zapytania za pomocą is
operator zamiast:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Powiedziałeś, że oczekujesz od JDBC, że będzie wystarczająco „sprytny”, by zrobić to za ciebie, ale byłoby to dużym naruszeniem rozdziału obaw. Możesz chcieć mieć parametr w zapytaniu za pomocą =
które ustawiłeś NULL
wiedząc, że ta relacja nigdy nie oceni prawdy (najprawdopodobniej jako część większego zestawu warunków).