2011-03-05 57 views
0

我試圖做到這一點:打開兩個結果同時

while (rs.next()) { 
    int id = rs.getInt(1); 

    ResultSet innerRs = stmt.executeQuery("select something from sometable where id =" + id + ";"); 

    String one = innerRs.getString(1); 
    String two = rs.getString(2); //result set is already closed thrown here. 

} 

但我得到的錯誤「結果集已關閉」。我正在使用Postgresql。我無法找到另一種方法來做到這一點,這不是非常耗費勞力。我怎樣才能解決這個錯誤?

回答

4

您不需要兩個結果集。只需learnSQL JOIN clause,以便您可以在單個SQL查詢中從兩個不同表中獲取所需的數據。

如果你真的需要,那麼創建一個單獨的語句而不是重用現有的語句確實是一種方法。重用它將強制所有先前打開的遊標(結果集)被關閉。

+0

我認爲加入可能是理想的,謝謝。將實施它並看到。 – providence 2011-03-05 04:17:40

+0

@providence它可能是最好的加入(生病承認我沒讀過你的字符串),但爲什麼你會得到這個錯誤的答案是結果集關閉我張貼作爲第一個答案。很高興知道您是否在未來遇到此問題。我有一個類似的問題,編寫2個獨立的數據庫管理系統之間的接口:) – rayman86 2011-03-05 04:25:01

+0

輝煌,這沒有把戲。總是很高興學習這樣的功能!此外,謝謝@ rayman86解釋錯誤的性質!那知識一定會派上用場+1 – providence 2011-03-05 04:42:32

3

您使用stmt.executeQuery(),是否用stmt執行rs?如果是這樣,您需要一個新的statement作爲創建查詢您使用已經強制它關閉,導致此錯誤。

相關問題