如何迭代ResultSet?我試着用下面的代碼,但我得到了錯誤java.sql.SQLException:對空結果集進行非法操作。SQL中的問題,java中的ResultSet
while (!rs.isLast()) {
rs.next();
int id = rs.getInt("person_id");
SQL.getInstance().getSt().execute("INSERT ref_person_pub(person_id) VALUES(" + id + ")");
}
更新:我發現了這個問題。我只使用了SQL單例中的一條語句。聲明關閉後,不能再使用。
當我嘗試在while語句中使用rs.next()時,我得到相同的錯誤。 – aphex 2010-03-30 13:39:41
在新獲取的結果集上調用next()時,您可能不可能獲得對空結果集的「非法操作」。所以你的問題在別的地方。無論您是訪問錯誤的結果集,還是錯誤地解釋導致錯誤的異常和/或代碼行。 – BalusC 2010-03-30 14:00:51
如果'getSt'(我建議使用完整的單詞)返回相同的'語句',那麼它不是泄漏。我的JDBC非常生疏,你是否允許繼續使用迭代器,同時在'Statement'上執行另一個語句(壞的比喻:在迭代時改變集合)?無論如何,使用'PreparedStatement'而不是動態SQL。編輯:'語句'API文檔的第二行:「默認情況下,每個Statement對象只能同時打開一個ResultSet對象。」 – 2010-03-30 15:10:23