1. 程式人生 > >程式DEBUG和執行結果不一致??不要在DEBUG中監視ResultSet了!!

程式DEBUG和執行結果不一致??不要在DEBUG中監視ResultSet了!!

昨天除錯程式,很簡單的一段程式,

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()等等。