BUG记录
Resultset的rs.next()
今天排查了一个老项目的异常,使用的是
PreparedStatement pstm = ..... Resultset rs = pstm.executeQuery(); if(!rs.next()){ System.out.print("a"); } if(rs.next()){ System.out.print("b");}
这个地方的结果集查出来只有一条数据,但是打印不出来东西,按照正常逻辑来说,这就是if else的拆分,但是很明显这里有问题。根据查询的解释:next()方法相当于指针,做第二次判断的时候就跳过了第一条数据,导致输出异常。所以直接写成if else 就没问题了。
PreparedStatement pstm = ..... Resultset rs = pstm.executeQuery(); if(!rs.next()){ System.out.print("a"); }else{ System.out.print("b");}