J'interroge une base de données et certains des résultats obtenus sont nuls. Je règle ces valeurs sur une variable avec un type de données double. Appelons la variable "résultats". J'ai donc essayé de créer une instruction if pour qu'elle soit égale à Null, ce qui n'a bien sûr pas fonctionné. Voici le code que j'ai pour cette déclaration if:
if (results == null)
{
results = 0;
}
L'erreur que je reçois avec ce code est:
L'opérateur == n'est pas défini pour le type d'argument double, null
Y a-t-il une meilleure façon de déterminer si c'est nul?
Je recommanderais d'utiliser un double et non un double comme type, puis vous vérifiez avec null.
Premièrement, un Java double
ne peut être null et ne peut pas être comparé à un Java null
. (Le double
type est un type primitif (non référencé) et les types primitifs ne peuvent pas être nuls.)
Ensuite, si vous appelez ResultSet.getDouble(...)
, qui renvoie un double
et non un Double
, le comportement documenté est qu'un NULL (de la base de données) sera retourné à zéro. (Voir lien javadoc ci-dessus.) Ce n'est pas une aide si zéro est une valeur légitime pour cette colonne.
Donc, vos options sont:
utilisez ResultSet.wasNull()
pour rechercher un (base de données) NULL ... immédiatement après l'appel getDouble(...)
, ou
use ResultSet.getObject(...)
, et tapez le résultat comme Double
.
La méthode getObject
fournira la valeur en tant que Double
(en supposant que le type de colonne est double
), et il est indiqué de renvoyer null
pour une valeur NULL. (Pour plus d'informations, cette page documente les mappages par défaut des types SQL sur Java et, par conséquent, le type réel auquel vous devriez vous attendre getObject
] .)
Une double primitive in Java ne peut jamais être nulle. Elle sera initialisée à 0.0 si aucune valeur n'a été donnée pour elle (sauf lors de la déclaration d'une double variable locale et de l'attribution d'une valeur, mais produire une erreur de compilation).
Plus d'informations sur les valeurs primitives par défaut ici .
Dire que quelque chose "est nul" signifie qu'il s'agit d'une référence à la valeur nulle. Les primitives (int, double, float, etc.) ne sont par définition pas des types de référence et ne peuvent donc pas avoir de valeur NULL. Vous aurez besoin de savoir ce que votre wrapper de base de données fera dans ce cas.
Comment obtenez-vous la valeur de "résultats"? Vous l'obtenez via ResultSet.getDouble ()? Dans ce cas, vous pouvez vérifier ResultSet.wasNull()
.
Vous pouvez simplement définir la valeur de la variable double et comparer avec celle
Ex.
double var1= 0, var2=0;
if(var1!= 0 && var2!= 0 ){
}
J'espère que cela t'aidera!