java中result方法_在Java中处理ResultSet的有效方法

在Java中处理ResultSet的有效方法

我在Java中使用ResultSet,并不知道如何正确closures它。 我正在考虑使用ResultSet构造一个HashMap,然后closuresResultSet。 这个HashMap技术是否有效,还是有更有效的方法来处理这种情况? 我需要键和值,所以使用HashMap似乎是一个合理的select。

如果使用HashMap是最有效的方法,那么如何在我的代码中构造和使用HashMap?

以下是我所尝试的:

public HashMap resultSetToHashMap(ResultSet rs) throws SQLException { ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); HashMap row = new HashMap(); while (rs.next()) { for (int i = 1; i <= columns; i++) { row.put(md.getColumnName(i), rs.getObject(i)); } } return row; }

遍历ResultSet

为每一行创build一个新的对象,来存储你需要的字段

将这个新对象添加到ArrayList或Hashmap或任何你喜欢的

closuresResultSet,Statement和数据库连接

完成

编辑:现在你已经发布的代码,我已经做了一些改变。

public List resultSetToArrayList(ResultSet rs) throws SQLException{ ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); ArrayList list = new ArrayList(50); while (rs.next()){ HashMap row = new HashMap(columns); for(int i=1; i<=columns; ++i){ row.put(md.getColumnName(i),rs.getObject(i)); } list.add(row); } return list; }

我刚刚清理了RHT的答案,以消除一些警告,并认为我会分享。 Eclipse做了大部分的工作:

public List> convertResultSetToList(ResultSet rs) throws SQLException { ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); List> list = new ArrayList>(); while (rs.next()) { HashMap row = new HashMap(columns); for(int i=1; i<=columns; ++i) { row.put(md.getColumnName(i),rs.getObject(i)); } list.add(row); } return list; }

RHT几乎没有。 或者你可以使用RowSetDynaClass ,让别人做所有的工作:)

一些事情,以提高其他答案。 首先,你永远不应该返回一个HashMap ,这是一个特定的实现。 而是返回一个普通的旧java.util.Map 。 但是这个例子实际上并不正确。 您的代码只返回ResultSet的最后一行作为(哈希)映射。 你反而要返回一个List> 。 想想你应该如何修改你的代码来做到这一点。 (或者你可以采取戴夫牛顿的build议)。

这是我的替代解决scheme,而不是一个地图列表,我正在使用列表的地图。 testing5000个元素的表格,在远程数据库上,eiter方法的时间大约是350ms。

private Map> resultSetToArrayList(ResultSet rs) throws SQLException { ResultSetMetaData md = rs.getMetaData(); int columns = md.getColumnCount(); Map> map = new HashMap<>(columns); for (int i = 1; i <= columns; ++i) { map.put(md.getColumnName(i), new ArrayList<>()); } while (rs.next()) { for (int i = 1; i <= columns; ++i) { map.get(md.getColumnName(i)).add(rs.getObject(i)); } } return map; }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值