查询显示额外的行

时间:2013-12-30 04:41:41

标签: java sql

<%
                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,当我尝试显示数据时,它给我无效的光标状态,所以我的查询有什么问题吗?

感谢

1 个答案:

答案 0 :(得分:1)

ResultSet的默认敏感度为TYPE_FORWARD_ONLY,这意味着它无法滚动;你不能调用任何移动光标的方法 -

  • 上一页
  • 首先
  • 最后
  • beforeFirst
  • afterLast
  • relative(int rows)
  • 绝对(int行)

next除外,无法滚动ResultSet。如果您的结果集是使用默认敏感度创建的,那么在通过while语句中的rs.first();移动到最后一个结尾后,无法使用rs.next()滚动它们。

but when i run the while(rs.next())size++; it returns 4,

首次创建ResultSet对象时,光标位于第一行之前,因此您将获得4。

由于