如何在java中搜索结果集?

时间:2010-11-05 06:04:11

标签: java sql resultset

我正在尝试最小化我的SQL查询,所以我的决心是列出我需要的所有记录的ID。这样做,通过一个查询,我可以获得有关某个ID的所有信息。

ID          Passed      flag    type    Total
123ABC      878         0       1       1070
123ABC      1272        0       1       1507
123ABC      1152        0       1       1342
123ABC      0           0       2       0
123ABC      1045        0       1       1214
123ABC      1270        0       1       1471
123ABC      0           0       1       0
123ABC      476         0       2       787
123ABC      96          0       2       158
123ABC      23          0       3       70
123ABC      11          0       2       42
987ZYX      77          1       2       135
987ZYX      0           1       2       0
987ZYX      0           1       2       0
123ABC      487         1       2       513
123ABC      1           1       2       3
987ZYX      293         0       2       759
987ZYX      5611        0       1       6386
987ZYX      0           0       2       0
987ZYX      0           0       3       0

上表显示了运行查询后得到的结果示例。 问题是,我需要遍历我的ID列表并从该结果集中获取与该ID相关的所有记录。是否可以将此表(实际上是ResultSet对象)转换为ArrayList或HashMap以便于索引,还是可以使用实际的ResultSet实现它?

3 个答案:

答案 0 :(得分:2)

只需在SQL中执行!

您需要的只是SQL语句中的一个简单的“ORDER BY ID”。

在SQL中进行集合操作几乎总是更有效率和有效。要记住的关键点是编写查询引擎的人比你或我更好的程序员,他们可能已经调整SQL引擎的时间比你编程的时间长。

答案 1 :(得分:1)

听起来您应该可以使用从一个SQL语句中的另一个查询的结果中选择的子查询来执行此操作。

这是一个链接: http://beginner-sql-tutorial.com/sql-subquery.htm

实际上重新阅读你的问题听起来更像是你只需要添加到where子句的内容,ID ='123ABC'

答案 2 :(得分:0)

您必须将完整的结果集复制到另一个数据结构中才能使用其“内容”。通常的方法是创建一个可以保存单行(aka:bean)的值的类:

 class Data {
   private String id;
   private int passed;
   private boolean flag;
   private int type;   // or an enum, if "types have names"
   private int total;
   public Data(){};
   // getters, setters for all fields
 }

阅读完表后,创建一个集合并为每一行添加一个bean:

 List<Data> result = new ArrayList<Data>();
 while (rs.next()) {
   Data data = new Data();
   data.setId(rs.getString(0));
   // ..
 }

现在我们有一个集合,我们可以使用表的实际内容。


如果要过滤数据,例如只读取具有特定ID值的行,则应考虑创建仅返回行WHERE ID='MyID'的值的SQL SELECT命令。