I have a column in my database that is typed double
and I want to read the value from it using a JDBC ResultSet, but it may be null. What is the best way of doi
Option 1 is closest:
double d = rs.getDouble(1);
if (rs.wasNull()) {
// do something
} else {
// use d
}
It's not very nice, but that's JDBC. If the column was null, the double value is considered "bad", so you should check using wasNull()
every time you read a primitive that is nullable in the database.
Depending on your JDBC driver and database, you may be able to use a boxed type and cast:
Double doubleValueOrNull = (Double)rs.getObject(1); // or .getObject("columnName")
It will be null
if the column was NULL
.
Be careful to check this still works if you change database.
Use:
rs.getObject(1)==null?null:rs.getBigDecimal(1).doubleValue()
Or with java 8 you can do this:
Double dVal = Optional.ofNullable(resultSet.getBigDecimal("col_name"))
.map(BigDecimal::doubleValue).orElse(null));
Kotlin version to retrieve a nullable field:
val parentId = resultSet.getObject("parent_id") as Double?