【问题标题】:Get all values in the row `java.sql.ResultSet` in one go一次性获取`java.sql.ResultSet`行中的所有值
【发布时间】:2019-07-25 10:48:58
【问题描述】:

使用java.sql.ResultSet 类,出于性能考虑,我想将一行中的所有单元格作为对象列表或对象数组获取,并推迟每个单元格的处理/获取。以下方法:

Object obj = resultSet.getObject(i);

应该被调用columnCount的次数。

最快的方法是什么? / 为什么缺少一个看似明显的功能?

【问题讨论】:

  • 只使用循环怎么样?
  • 您打算如何避免“获取”?这听起来像是一个过早的大规模优化。
  • Obj[] getAllObjects() 不会减少函数调用的次数吗? “列”折叠?为什么考虑速度不合时宜?
  • 也许是因为没有人想要一个 Object 数组,他们必须对每个元素进行类型转换
  • 在我认为不太具体的用例中,我加载数据和一些元数据,将其发送到某个前端模块,可能在将来,在单独的机器上。前端将进一步处理铸造和处理。 While / 因为我的后端将成为我的瓶颈。因此,拥有该功能会很好。我希望我的设计不会引起人们的注意:)

标签: java ojdbc


【解决方案1】:

我认为这可能会满足您的需求。它应该返回ResultSet 当前行的所有列值。

List<Object> getValues(ResultSet resultSet) {
   ResultSetMetaData metadata = resultSet.getMetadata();
   int numberOfCols = metadata.getColumnCount();

   List<Object> values = new ArrayList<>();

   for(i=0; i < numberOfCols; i ++) {
      values.add(resultSet.getObject(i));
   }

   return values;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2011-09-18
    • 2019-10-05
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多