LoginSignup
5
2

More than 5 years have passed since last update.

ResultSetのgetXxxxがプリミティブ型なせいでハマった件(Java)

Last updated at Posted at 2017-12-14

DB的にはNULLが入っているところを↓のコードで取得したら、
なんとnullではなく0になった。

Double d = rs.getDouble(1);
System.out.println(d);//"0.0"と出力される

確認してみると、getDoubleの戻り値はDoubleではなくdouble…
↓ソース
ResultSet (Java Platform SE 8 )

戻り値:
列値。値がSQL NULLの場合、返される値は0

洗い出したところ、以下メソッドがnullがnull以外を返すようです。

  • getBoolean
  • getByte
  • getShort
  • getInt
  • getLong
  • getFloat
  • getDouble

wasNullなんていうgetXxxxで読み取った後に
それがnullかチェックできるメソッドも用意されてるが、
isNullではなく過去形ってあたりが使いづらい…。

結局、↓で解決した

Double d = (Double)rs.getObject(1);
System.out.println(d);//nullと出力される

結論

JDBCを直接使わないで、なんかしらの永続化フレームワークつかえ。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2