データベースにクエリを実行していますが、取得した結果の一部がnullです。これらの値を、データ型がdoubleの変数に設定しています。変数を「結果」と呼びましょう。だから私はもちろんそれがうまくいかなかったNullに等しいことを確認するためにif文を設定しようとしました。 ifステートメントのコードは次のとおりです。
if (results == null)
{
results = 0;
}
このコードで発生するエラーは次のとおりです。
演算子==は、引数タイプdoubleに対して未定義、null
Nullかどうかを判断するより良い方法はありますか?
型としてdoubleではなくDoubleを使用することをお勧めします。その後、nullをチェックします。
まず、a Java double
はnullにできず、Java null
と比較できません。(double
型はプリミティブ(非参照)型であり、プリミティブ型はnullにできません。)
次に、 ResultSet.getDouble(...)
を呼び出すと、double
ではなく、Double
が返されます。 NULL(データベースから)がゼロとして返されることです。 (上記のリンクされたjavadocを参照してください。)ゼロがその列の正当な値である場合、これは役に立ちません。
オプションは次のとおりです。
ResultSet.wasNull()
を使用して、(データベース)NULL ... getDouble(...)
呼び出しの直後にテストするか、または
ResultSet.getObject(...)
を使用し、結果をDouble
に型キャストします。
getObject
メソッドは、値をDouble
(列タイプがdouble
であると仮定)として配信し、NULLに対してnull
を返すように文書化されています。 (詳細については、 このページ では、SQLタイプのデフォルトのマッピングJavaタイプ、したがって実際のタイプgetObject
が配信されることを期待してください。)
Javaのnullになることはありません。値が指定されていない場合は、0.0に初期化されます(ローカルdouble変数を宣言して値を割り当てない場合を除き、コンパイル時エラーを生成します)。
デフォルトのプリミティブ値に関する詳細情報 here 。
「null」とは、null値への参照であることを意味します。プリミティブ(int、double、floatなど)は、定義により参照型ではないため、null値を持つことはできません。この場合、データベースラッパーが何をするかを調べる必要があります。
「結果」の価値をどのように得ていますか? ResultSet.getDouble()で取得していますか?その場合、 ResultSet.wasNull()
を確認できます。
単純にdouble変数の値を定義し、それと比較できます
例.
double var1= 0, var2=0;
if(var1!= 0 && var2!= 0 ){
}
これがお役に立てば幸いです!