Rien n'est = NULL
. Si vous avez tapé select * from test where value=NULL
dans un évaluateur de requêtes interactif, vous n'obtiendrez rien en retour. JDBC ne réécrit pas votre expression, il remplace simplement les valeurs.
Vous devez utiliser une requête en utilisant le is
opérateur à la place :
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Vous avez dit que vous vous attendiez à ce que JDBC soit suffisamment "intelligent" pour le faire pour vous, mais ce serait une grave violation de la séparation des préoccupations. Vous pourriez bien vouloir pour avoir un paramètre dans votre requête en utilisant =
que vous définissez NULL
sachant que cette relation ne sera jamais évaluée comme vraie (dans le cadre d'un ensemble plus large de conditions, très probablement).