一次性获取`java.sql.ResultSet`行中的所有值
Posted
技术标签:
【中文标题】一次性获取`java.sql.ResultSet`行中的所有值【英文标题】:Get all values in the row `java.sql.ResultSet` in one go 【发布时间】:2019-07-25 10:48:58 【问题描述】:使用java.sql.ResultSet
类,出于性能考虑,我想将一行中的所有单元格作为对象列表或对象数组获取,并推迟每个单元格的处理/获取。以下方法:
Object obj = resultSet.getObject(i);
应该被调用columnCount
的次数。
最快的方法是什么? / 为什么缺少一个看似明显的功能?
【问题讨论】:
只使用循环怎么样? 您打算如何避免“获取”?这听起来像是一个过早的大规模优化。 Obj[] getAllObjects() 不会减少函数调用的次数吗? “列”折叠?为什么考虑速度不合时宜? 也许是因为没有人想要一个 Object 数组,他们必须对每个元素进行类型转换 在我认为不太具体的用例中,我加载数据和一些元数据,将其发送到某个前端模块,可能在将来,在单独的机器上。前端将进一步处理铸造和处理。 While / 因为我的后端将成为我的瓶颈。因此,拥有该功能会很好。我希望我的设计不会引起人们的注意:) 【参考方案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;
【讨论】:
以上是关于一次性获取`java.sql.ResultSet`行中的所有值的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.ResultSet、CallableStatement、SQLInput 没有通用接口
java.sql.ResultSet.next() 光标常见错误总结分析
为啥 java.sql.ResultSet 的“getFloat(column)”方法不返回任何内容,而其他方法则返回?