Как объединить два ResultSets в Java?

У меня есть два набора результатов (rs1 и rs2) наличие тех же полей. Теперь, как объединить те два набора результатов в тот так, чтобы дублирующиеся строки показали однажды.

6
задан BalusC 19 February 2010 в 02:09
поделиться

2 ответа

если два ResultSet взяты из одной базы данных, то почему бы не объединить их во время извлечение с помощью union ; например

select A, B
from C
union
select A, B
from D

Однако, если это не вариант, я предлагаю определить класс Row для представления строки, извлеченной из вашего ResultSet , и реализовать равным / ] hashCode , позволяющий сравнивать Строку на равенство. Затем просто добавьте каждую строку в набор (например, HashSet ), чтобы удалить дубликаты.

12
ответ дан 8 December 2019 в 16:02
поделиться

Вы можете:

  1. создать класс, который имеет свойства, соответствующие столбцам
  2. реализовать методы equals() и hashCode(), используя поля, по которым вы определяете "дубликат" (пусть ваша IDE поможет вам с их генерацией)
  3. создать Set (HashSet):

    Set combinedDataSet = new HashSet();

  4. Итерация каждого resultSet и создание объектов:

    while (rs1. next) {
     YourClass obj = new YourClass();
     obj.setSomeProperty(rs.getString(1));
     obj.setAnotherProperty(rs.getString(2));
     // и т.д.
     cominbedDataSet.add(obj);
    }
    

    Та же самая итерация происходит для rs2

Делайте это только в том случае, если вы не можете получить желаемый результат через SQL-запрос!

3
ответ дан 8 December 2019 в 16:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: