2013-05-24 4 views
0

У меня есть длинный запрос в Java, который помещается в результирующий набор и выполняется методом executeQuery (string). Теперь мне нужно пройти этот набор результатов, запросить каждую из записей в наборе результатов (метод get_linked_OrgTickets содержит этот запрос) и выводить только те строки, которые возвращают что-то в Vector linkedToTicket из ResultSet. Можно ли отсортировать этот ResultSet и скопировать указанные строки в другой набор результатов или, возможно, удалить строки, которые не будут выводиться из ResultSet? Есть ли другой способ решить эту проблему?Выберите записи из ResultSet java

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 вручную.

Пожалуйста, помогите!

+0

Итак, где неисправная этот фрагмент? Что вы пробовали? – Shark

+1

это будет зависеть от логики 'get_linked_OrgTickets' и вашего запроса. «Фильтр» может быть частью первого запроса. –

+0

Он не может быть частью первого запроса, так как мне нужно получить идентификаторы билетов, возвращаемых рядом критериев, и проверить, связаны ли эти идентификаторы с другими. – Bernice

ответ

1

Возможно, вы могли бы манипулировать курсором в resulset и получать нужные данные. Что-то вроде этого

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, потому что вы будете изменять основную строку данных

+0

Спасибо @fgo за ваш ответ :) У вас есть идея, если я смогу затем вставить эти строки в другой результирующий набор вручную? – Bernice

Смежные вопросы