如何在不产生转换成本的情况下检索可能为空的JDBC NUMERIC列值?

4

我有一个使用JDBC访问Oracle数据库的简单查询,但是检索速度很慢,尽管查询本身似乎不是问题所在。分析器显示大量时间花费在以下方面:

ResultSet#getString(String)

有些方法可以检索Oracle的NUMBER列,这些列具有Java long精度或类似精度。这些值也可能为null。

我猜想当返回定义为数字的列值时,getString(String)会很慢 - 并考虑使用getLong(String),但当然它返回一个无法为null的原始类型。

有更好的方法吗?JDBC NUMERIC值可以作为对象返回,而不需要将其转换为String或产生任何其他转换成本吗?

1个回答

6

这样就可以了吗?

long value = resultSet.getLong(colName);
if (resultSet.wasNull()) {
   return null;
} else {
   return Long.valueOf(value);
}

谢谢!我想在这个阶段对JDBC API提出不满意是不合理的。但执行两个操作似乎并不是最优解。 - EBCDIC
@EBCDIC: 请参考https://dev59.com/MU3Sa4cB1Zd3GeqPwp6E。 - skaffman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接