在java中,是否有任何方法可以获取ResultSet变量中的特定数据

在java中,是否有任何方法可以获取ResultSet变量中的特定数据,java,Java,我有这样一个结果集 ResultSet rs = connection.executeQuery("Select * From x"); 通常我们使用 while(rs.next()){}获取每个数据 但如果我只想从数据库中获取一次数据,并且每次都使用不同的select参数,我该怎么做呢? 我不想每次都去db。我想从这个resultset示例中选择数据,其中id=1或其中foreignkey=25。最明显的解决方案是将数据移动到地图,并使用字段(id或foreignkey)作为键,然后在该地图

我有这样一个结果集

ResultSet rs = connection.executeQuery("Select * From x");
通常我们使用
while(rs.next()){}
获取每个数据

但如果我只想从数据库中获取一次数据,并且每次都使用不同的select参数,我该怎么做呢?
我不想每次都去db。我想从这个resultset示例中选择数据,其中id=1或其中
foreignkey=25

最明显的解决方案是将数据移动到地图,并使用字段(id或foreignkey)作为键,然后在该地图中进行查找


或者,将其添加到任何类型的集合中,并使用流和lambda表达式获取正确的对象

正如我所想的,我只是想知道resultset方法本身能否做到这一点。但是感谢您的回答结果集包含数据库/jdbc资源,因此您应该尽快关闭它。为什么不简单地
从x选择*from x,其中id=1
?您不希望每次都访问数据库,但您似乎认为您将根据需要在
ResultSet
中搜索数据,但您需要在某个点关闭连接才能正确执行,同时将关闭
ResultSet
。如果您真的不想询问每个条件的数据。只需将数据持久保存在
集合中
,但这会占用内存。。。根据数据量、请求速率……想想什么是最好的,想想在for循环中选择数据,在每个循环中从db中选择会使应用程序太慢。我想一次选择所有数据,并在java应用程序中使用它,时间更短。创建查询以在一个查询中选择所需的所有数据。在循环中构建查询和参数。在循环之外,实例化
PreparedStatement
并执行查询。您所要做的就是迭代
ResultSet
以获取数据,然后根据需要使用
ResultSet
。@KadirKalkan然后在任何适当的Java数据结构中捕获每一行(以及该行中的每一列)。但请注意,并非所有数据都存储在内存中(数据库可能非常庞大)。请简单解释一下您的限制。
ResultSet
是。。。一个
集合
,您所能做的就是从头到尾迭代集合,并在该
集合
中的每个实例中搜索所需的字段,
结果集
需要打开连接,因为某些驱动程序无法在内存中恢复全部结果,只恢复起始结果,如果需要,将获取更多结果。知道了这一点,你应该明白你不能用
结果集
做你想做的事。(注:您可以要求
ResultSet
以两种方式都可读)