我有以下結構:的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();
但這不起作用。我沒有收到任何異常或任何其他輸出。我建議打開第二個結果集將關閉第一個結果集,因爲我做了第一個結果集,將數據存儲在一個數組列表中並關閉它,然後第二個結果集起作用,但這導致性能較差,因爲我必須始終搜索陣列列表。
什麼可能是更好的解決方案?
編輯:解決方案是使加入,我目前的嘗試:
select * from List_participant
INNER JOIN List ON List.name = List_participant.List
INNER JOIN participant ON List_participant.participant =participant.ROWID;
我現在該如何ADRESS列,因爲它們可能具有相同的名字嗎?
你沒有在數據庫進行連接的原因?看起來像是明顯的解決方案。 – 2011-12-20 17:45:31
您應該儘可能地將作業委託給SQL語言,以便它僅在一個SQL查詢中完全返回**您想要的結果。這對Java和數據庫都是雙贏的。學習'JOIN'子句。 – BalusC 2011-12-20 18:05:23
@JonSkeet:的確如此。我只是不習慣SQL。我怎麼會一次做兩個連接?這樣我就可以獲得所有列表中的所有參與者。我用現狀更新了答案。喬恩請寫你的評論作爲答案,所以我可以標記它! – Anthea 2011-12-20 18:40:30