代码之家  ›  专栏  ›  技术社区  ›  lock

如何在java中搜索结果集?

  •  0
  • lock  · 技术社区  · 14 年前

    我正在尝试最小化我的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.相关的记录,是否有可能将这个表(RefftStand对象实际)转换成数组列表或HASMAP,以便更容易地进行索引,或者我可以使用实际结果集来实现它吗?

    3 回复  |  直到 7 年前
        1
  •  2
  •   James Anderson    14 年前

    就用SQL吧!

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

    在SQL中进行集合操作几乎总是更加高效和有效。要记住的关键一点是,编写查询引擎的人比您或我都是更好的程序员,而且他们可能已经比您编程的时间更长地优化了SQL引擎。

        2
  •  1
  •   Tom    14 年前

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

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

    实际上,在阅读你的问题时,听起来更像是你只需要在where子句中添加一些ID='123ABC'的内容

        3
  •  0
  •   duffymo    14 年前

    为了处理它的“内容”,您必须将完整的结果集复制到另一个数据结构中。通常的方法是创建一个类,该类可以保存单个行(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值的行,则应考虑创建一个SQL SELECT命令,该命令只返回行的值 WHERE ID='MyID' .