关于java.sql.resultset的问题

时间:2010-12-27 09:40:21

标签: java jdbc

我有一个关于jdbc Resultset的问题。

我需要在其中一个表中获取一些记录。检索记录后,如何使用ID列表搜索ResultSet中的记录?

我应该先将结果集转换为hashmap吗?

5 个答案:

答案 0 :(得分:2)

  

检索记录后,如何使用ID列表搜索ResultSet中的记录?

这是错误的做法。在获取ResultSet之前,应该在SQL查询中进行搜索和过滤。

之后,假设您已经ResultSet rs,请使用

进行迭代
while (rs.next()) {
   // do whatever you want with results
}

在ResultSet上搜索 - >糟糕的做法。

答案 1 :(得分:1)

假设您不想修改SQL查询以仅首先检索这些结果,然后将结果转换为更有用的数据结构(例如,为每个记录创建一个对象,然后将它们存储在哈希映射中通过ID)是一个很好的方式,是的。

答案 2 :(得分:0)

将ResultSet视为数据库的一种接口,ResultSet本身不包含任何数据,因此无需搜索。

因此,如果您需要操作,搜索,...您最好将所有数据读入结构中。

哈希结构可能是最好的,但这取决于您构建数据的方式。

您不应该做的唯一事情是在ResultSet上多次交互,因为除非您使用特定的缓存实现,否则会导致大量不必要的数据库流量

答案 3 :(得分:0)

您可以借助“next()”[resultSet.next()]方法遍历循环结果集。使用getString(),getInt(),......

获取值

例: 设rs是我的结果集,

而(rs.next()){

S.o.p( “名称:” + rs.getString( “名称”)); S.o.p( “年龄:” + rs.getInt( “时代”)); }

答案 4 :(得分:0)

我同意HashMap会起作用。如果记录数量很大,则可以通过不将ResultSet数据加载到任何结构中来节省时间和内存。如果您在查询中按ORDER BY ID,则可以轻松地使用rs.next();从ResultSet直接获取数据。