如何从结果集中获取Double而不是double?

时间:2010-01-28 21:41:26

标签: java jdbc

使用JDBC结果集时,我希望得到Double而不是double,因为此列可以为空。当列为空时,Rs.getDouble返回0.0。

5 个答案:

答案 0 :(得分:26)

您可以在ResultSet上检查wasNull,以确定该值是否为null

  

请注意,您必须首先调用列上的其中一个getter方法以尝试读取其值,然后调用方法wasNull以查看读取的值是否为SQL NULL。

如果您之后确实需要Double,可以从返回的double创建。

答案 1 :(得分:14)

上述ResultSet#wasNull()的替代方法是在null上测试ResultSet#getObject(),以便您可以将其与三元运算符组合在一行中:

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

而不是

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

答案 2 :(得分:6)

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

基本上它适用于所有原始类型,您首先使用getDoublegetInt等,然后仅当结果为0时才使用wasNull

答案 3 :(得分:3)

你可以这样做:

Double d =(Double)resultSet.getObject(“column”);

然后你不必担心它是否为空。

答案 4 :(得分:0)

在科特林中:

private fun ResultSet.getDoubleOrNull(columnIndex: Int): Double? when {

     this.getObject(columnIndex) == null -> null

     else -> this.getDouble(columnIndex)

}