Tout d'abord, un double
Java ne peut pas être un null
en Java, et ne peut pas être comparé à null
. (Le type double
est un type primitif (non-référence) et les types primitifs ne peuvent pas être null
.) Je pars donc du principe suivant :
- Le "null" que vous essayez de détecter est un NULL stocké dans la base de données que vous interrogez.
- Vous utilisez JDBC pour interroger la base de données.
Si vous appelez ResultSet.getDouble(...)
, cela renvoie un double
et non un Double
, le comportement documenté est qu'un NULL (provenant de la base de données) sera renvoyé comme zéro. (Voir la javadoc liée ci-dessus.) Ce n'est pas utile si zéro est une valeur légitime pour cette colonne.
Changer le type déclaré de résultat
en Double
au lieu de double
comme suggéré par la réponse de Toby ne sera pas utile. Lorsque la base de données contient un NULL, la valeur attribuée à résultat
sera un Double(0.0)
, et non un null
.
Voici deux options qui fonctionneront :
La méthode getObject
renverra une valeur (non-NULL) en tant que Double
(en supposant que le type de colonne soit double
). Il est documenté de renvoyer null
pour un NULL. (Pour plus d'informations, cette page documente les mappings par défaut des types SQL vers les types Java, et donc le type réel que vous devriez attendre de la méthode getObject
.)