<%
String qTotal = "SELECT MsThread.ID, MsThread.ThreadName, Count(MsThread.ThreadName) AS TotalPost, ThreadCategory FROM MsThread LEFT OUTER JOIN MsPosts ON MsThread.ThreadName = MsPosts.ThreadName GROUP BY MsThread.ID, MsThread.ThreadName, MsThread.ThreadCategory;";
ResultSet rs = stmt.executeQuery(qTotal);
int size = 0;
while(rs.next())
{
out.print(size++);%><br/><%
}
rs.first();
out.println(rs.getString("id"));
rs.next();
out.println(rs.getString("id"));
rs.next();
out.println(rs.getString("id"));
if(!rs.next())
{
out.println("no data");
}
else
out.println(rs.getString("id"));
%>
大家,这就是发生的事情,当我试图运行查询时它显示3个结果(http://s29.postimg.org/6qiv9kc9j/ss_forum.png)但是当我运行 而(rs.next())的大小++; 它返回4,当我尝试显示数据时,它给我无效的光标状态,所以我的查询有什么问题吗?
感谢
答案 0 :(得分:1)
ResultSet的默认敏感度为TYPE_FORWARD_ONLY
,这意味着它无法滚动;你不能调用任何移动光标的方法 -
next
除外,无法滚动ResultSet。如果您的结果集是使用默认敏感度创建的,那么在通过while语句中的rs.first();
移动到最后一个结尾后,无法使用rs.next()
滚动它们。
but when i run the while(rs.next())size++; it returns 4,
首次创建ResultSet对象时,光标位于第一行之前,因此您将获得4。
由于