繁体   English   中英

如何从结果集中得到一个 Double 而不是 double?

[英]How do I get a Double out of a resultset instead of double?

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

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

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

如果之后你真的需要一个Double ,你可以从返回的double创建它。

前面提到的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;
}

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

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

你可以这样做:

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

那么你不必担心它是否为空。

在科特林:

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

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

     else -> this.getDouble(columnIndex)

} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM