程式DEBUG和執行結果不一致??不要在DEBUG中監視ResultSet了!!
阿新 • • 發佈:2019-02-02
昨天除錯程式,很簡單的一段程式,
ResultSet rs = pstmt.executeQuery();
Clob result = null;
if (rs != null) {
while (rs.next()) {
。。。。。。
}
}
在PL/SQL DEVELOPER上可以查詢到結果,但在Java端除錯時,就是得不到結果集,確認Java端連線的就是PL/SQL DEVELOPER連線的那個庫!
但是,當不是除錯,而是直接執行程式時,又可以拿到結果集!
原來是自己把
rs.next()
這個語句加到debug的表示式監視中了!而監視中的語句也是會被執行的!!如果ResultSet只有一條結果集,經過監視中的next()方法後,已經拿完結果集了,所以正式程式中的while (rs.next()) {
這句話就拿不到了!!
同樣的可以知道,不應該把所有對程式有影響的語句新增到DEBUG的監視列表裡,如Iterator的hasNext()等等。