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

1

У меня две связи.

Connection cone = ... // to DB2
Statement statement = cone.createStatement();
ResultSet resultSet1 = statement.executeQuery("select * from tableone");

Connection ctwo = ... // to Teradata
Statement statement = ctwo .createStatement();
ResultSet resultSet2 = statement.executeQuery("select * from tabletwo"); 

Как я могу присоединиться к этим двум таблицам?


до сих пор я пишу вышеупомянутые результирующие наборы в csv, используя opencsv API. А затем манипулируйте двумя файлами csv. Я уверен, что мой подход далек от идеала, требуется время и неэффективность

Должно быть эффективное решение. В конце концов, два набора результатов - это java-объекты. Должен быть способ присоединиться к ним без стороннего API

Теги:

4 ответа

0
Лучший ответ

Создание временной таблицы в DB2, как было упомянуто, может быть не лучшим образом. Просто из-за ограничений разрешений. В вопросе четко спрашивается, как объединить два объекта набора результатов.

Я считаю, что был ответ на Stackoveflow

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

удачи

  • 0
    Я полагаю, вы неправильно поняли вопрос. Это вопрос: «Как я могу объединить эти две таблицы?»
2

Если обе схемы согласованы, вы можете создать один и тот же объект для каждой строки как ResultSet и все они помещают в один List.

Например,

List<T> results = new ArrayList<T>();
while(resultSet1.next()) {
    // retrieve fields here...
    results.add(new T(...fields...));
}

while(resultSet2.next()) {
    // retrieve fields here...
    results.add(new T(...fields...));
}
1

Вы должны загрузить свои результаты из Teradata в временную таблицу в DB2 и выполнить соединение после.

0

Существует класс JoinRowSet, который вы можете использовать.

// Data from one table
ResultSet someTable = con
         .createStatement()
         .executeQuery("SELECT id FROM some_table");

CachedRowSet someTableCached = new CachedRowSetImpl();
someTableCached.populate(someTable);

// Data from another table
ResultSet otherTable = con
         .createStatement()
         .executeQuery("SELECT id, man_id FROM other_table");

CachedRowSet otherTableCached = new CachedRowSetImpl();
otherTableCached.populate(someTable);


// Joining them
JoinRowSet jrs = new JoinRowSetImpl();
jrs.addRowSet(someTableCached, "id");
jrs.addRowSet(otherTableCached, "man_id");

Подробнее: https://docs.oracle.com/javase/tutorial/jdbc/basics/joinrowset.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню