从结果集中过滤行

时间:2018-10-17 19:38:45

标签: java mysql resultset

我创建了一个java方法,该方法返回如下结果集:

String query = "SELECT * FROM "+table_name+" WHERE "+parameter+ " = " +condition;
ResultSet rs = stmt.excecuteQuery(query);
return rs;

我的理解是ResultSet可以像SQL表一样,我正在寻找一种进一步从该结果集中选择特定行的方法。

类似另一种方法:

public ResultSet filterRS (ResultSet rs){
String query = "SELECT * FROM "+rs+" WHERE "+new_parameter+ " = " +new_condition;
ResultSet rs_new = stmt.excecuteQuery(query);
return rs_new;
}

我已经阅读了文档,但没有说明如何执行此操作。有可能以简单的方式吗?

2 个答案:

答案 0 :(得分:0)

仅需注意一点:您不应像这样那样拼凑您的查询。 您应该像这样将语句中的参数绑定:

    String queryString = "SELECT * FROM FOO WHER BAR = ?1 ";
    Query q = em.createNativeQuery(queryString);
    q.setParameter(1, conditionGoesHere);
    List <Result> result = (TCiletEpsTracking) query.getResultList();

一旦有了结果集,就有两种方法可以做到。我总是采用老式的方法,即遍历整个结果集,并在满足我的条件的情况下将其添加到列表中。

但是,如果您使用的是Java 8,那么我认为使用流对您会更好。这里是一些文献:https://beginnersbook.com/2017/10/java-8-stream-filter/

答案 1 :(得分:0)

不,你不能。

您需要在第一个查询中指定所有过滤条件,如:

select * from my_table
WHERE column1 = x
  AND column2 = y

然后,运行此SQL,您将获得所需的行。您可以使用ANDOR的任意组合。