关于rs.next()
发帖来源:
http://topic.csdn.net/t/20020427/09/680409.html
关于rs.next()的理解的一些我也有过的误区。
rs.next()表示的是什么,是不是检验rs的下一个是否为空,如果不为空,rs的下一个的值赋予rs?
帖子里这么问了一句。
首先是ResultSet rs的理解有误。“rs的下一个”和“rs的下一个的值赋予rs”。ResultSet rs.rs是一个Resultset是一个接口。我这么理解的。就把rs理解成一个table,执行完sql语句后得到的结果就全放到这个table里了。rs.next()不是rs的next是什么。rs有一个游标的域,游标初始时指向rs的table的前一行,所以当table不为空时候。while(rs.next()){}是从第一行进行对其操作的。而如果记录集为空的话,也不可以用if(rs==null)来进行判断,因为你都已经创建出来ResultSet了,怎么会为null呢,也解释了 http://www.cnblogs.com/xnxqs/archive/2005/05/23/160863.html .的一些说法。next()是rs实例的一个方法,它返回的是该记录集的下一行。所以判断是否 sql语句查询的记录集为空时候,应该用if(rs.next())来进行判断。rs.next()进入表的第一行,next()函数返回值说明如下,
Returns:true if the new current row is valid; false if there are no more rows
而你的记录集表为空,所以返回false,就对了。
我的疑问是,resultSet里并没有表啊,这个搜出来的符合你sql语句的记录集是存在哪里的??