I имеют следующую структуру:Java JDBC доступ к нескольким результирующих
Список -> List_Participant -> Участник
поэтому список может содержать несколько participants.I попытаться прочитать это в Java:
stat = con.createStatement();
ResultSet rs = stat.executeQuery("select * from list;");
// get the informations about the bracket sheet
while (rs.next()) {
string name = rs.getString("Name");
ResultSet rs2 = stat.executeQuery("select * from List_Participant where name= '"+name+"';");
while (rs2.next()) {
// get the participants
}
rs2.close();
}
rs.close();
Но это не работает. Я не получаю исключение и никакой другой выход. Я предлагаю открыть второй набор результатов, который закроет первый, потому что, поскольку я делаю первый набор результатов, сохраняю данные в arraylist и закрываю его, а затем второй, он будет работать, но это приводит к низкой производительности, потому что я должен всегда искать в арраист.
Что может быть лучшим решением?
Edit: Решение это сделать Join, мой текущий попробовать:
select * from List_participant
INNER JOIN List ON List.name = List_participant.List
INNER JOIN participant ON List_participant.participant =participant.ROWID;
Как адресовать столбцы сейчас, так как они могут иметь такое же имя?
Любая причина, по которой вы не присоединяетесь к базе данных? Похоже на очевидное решение. –
Вы должны делегировать задание как можно больше на язык SQL, чтобы он возвращал ** точно ** результат, который вы хотите получить только в одном запросе SQL. Это беспроигрышная игра для Java и БД. Изучите предложение 'JOIN'. – BalusC
@JonSkeet: действительно. Я просто не привык к SQL. Как я могу сделать два Соединения сразу? Так что я получаю всех участников во всех списках. Я обновил ответ с моим статус-кво. Джон, пожалуйста, напишите свой комментарий в качестве ответа, поэтому я могу отметить его! – Anthea