web-dev-qa-db-ja.com

結果セットからダブルではなくダブルを取得するにはどうすればよいですか?

JDBC結果セットを使用する場合、この列はNULL可能であるため、doubleではなくDoubleを取得したいと思います。列がnullの場合、Rs.getDoubleは0.0を返します。

22
benstpierre

ResultSetで wasNull をチェックして、値がnullであったかどうかを確認できます。

最初に列のgetterメソッドの1つを呼び出してその値を読み取ろうとし、次にメソッドwasNullを呼び出して読み取られた値がSQLNULLであるかどうかを確認する必要があることに注意してください。

後で本当にDoubleが必要な場合は、返されたdoubleから作成できます。

26
Peter Lang

前述のResultSet#wasNull()の代わりに、nullResultSet#getObject() をテストして、と組み合わせて1行にうまく配置できるようにすることもできます。三項演算子:

Double d = resultSet.getObject("column") != null ? resultSet.getDouble("column") : null;

の代わりに

Double d = resultSet.getDouble("column");
if (resultSet.wasNull()) {
    d = null;
}
14
BalusC

ResultSet.wasNullを使用-> http://Java.Sun.com/javase/6/docs/api/Java/sql/ResultSet.html#wasNull%28%29

基本的に、すべてのプリミティブ型で機能します。最初にgetDoublegetIntなどを使用し、次に結果が0の場合にのみwasNullを使用します。

6
Yoni

あなたはただすることができます:

Double d =(Double)resultSet.getObject( "column");

そうすれば、それがnullであるかどうかを心配する必要はありません。

3
MRhodes