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

ben*_*rre 22 java jdbc

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

Pet*_*ang 26

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

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

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


Bal*_*usC 14

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

Double d = resultSet.getObject("column") != null ? resultSet.getDouble("column") : null;
Run Code Online (Sandbox Code Playgroud)

代替

Double d = resultSet.getDouble("column");
if (resultSet.wasNull()) {
    d = null;
}
Run Code Online (Sandbox Code Playgroud)

  • @Yoni:调用一个简单的getter肯定没有性能损失.由于调用了`next()`,因此数据已经存在*. (2认同)

Yon*_*oni 6

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

基本上,它适用于所有基本类型,你第一次使用getDouble,getInt等等,然后仅当结果是你用0 wasNull.