Niets is = NULL
. Als u select * from test where value=NULL
. heeft getypt in een interactieve query-evaluator, zou je niets terug krijgen. JDBC herschrijft je uitdrukking niet, het vervangt alleen de waarden.
U moet een zoekopdracht gebruiken met de is
operator in plaats daarvan:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
U hebt gezegd dat u verwacht dat JDBC "slim" genoeg is om dat voor u te doen, maar dat zou een grote schending zijn van de scheiding van belangen. Je zou heel goed kunnen willen om een parameter in uw zoekopdracht te hebben met behulp van =
die u instelt NULL
wetende dat die relatie nooit waar zal evalueren (als onderdeel van een grotere reeks voorwaarden, hoogstwaarschijnlijk).