我在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
}
}
}
*EDIT: *这些子查询不能与主查询集成。要做到这一点的唯一方法是执行主查询一次不包含它,第二次包含它,这将是效率太低。ResultSet类似乎不包含删除行而不影响数据库或"手动"构建ResultSet的方法。
请帮忙!
也许您可以操作结果集中的游标并获取正确的数据。像这样
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
,因为您将修改底层数据行