0

我在 Java 中有一个长查询,它被放入结果集中并由 executeQuery(string) 方法执行。现在我需要遍历这个结果集,查询结果集中的每条记录(get_linked_OrgTickets 方法包含这个查询),并且只输出那些从 ResultSet 中返回 Vector linkedToTicket 内容的行。我可以遍历这个 ResultSet 并将所述行复制到另一个结果集中,或者删除不从 ResultSet 输出的行吗?还有其他方法可以解决这个问题吗?

if (linked == J.LINKED_TO_ORG){
    while (rs.next()){
           Vector linkedToTicket = Ticket.get_linked_OrgTickets(con, rs.getInt(Ticket.FLD_ID)); 

           if (linkedToTicket != null)
           {                                
          // if there are linked tickets in the result set, output them only

        }
    }
}

*编辑:*这些子查询不能与主查询集成。唯一的方法是在没有这个的情况下执行一次主查询,第二次包含它,这太低效了。ResultSet 类似乎不包含在不影响数据库的情况下删除行或“手动”构建 ResultSet 的方法。

请帮忙!

4

1 回答 1

1

也许您可以操纵结果集中的光标并获取正确的数据。像这样的东西

Statement stmt = connection.createStatement(
            ResultSet.TYPE_SCROLL_SENSITIVE, 
            ResultSet.CONCUR_UPDATABLE);
ResultSet resultSet = stmt.executeQuery(
            " SELECT col1 FROM tablename");
rs.absolute(5); // moves the cursor to the fifth row of rs
String field = rs.getString("MY_FIELD");

但是,请注意不要调用updaterow,因为您将修改基础数据行

于 2013-05-24T11:40:39.327 回答