zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0
如果你想的取得一个结果集的行数,怎么办?
在ResultSet对象里面,我们找不到取得结果行数的办法。
其实我们通常的解决方法无非有一下几种:

[1]
Connection con=....
Statement stmt = con.createStatement();
   
 String sqlStr = "count(*) as total ";
 ResultSet rst = stmt.executeQuery(sqlStr);
 
 rst.next();
int total =  rst.getInt("total");

缺点:如果想要遍历结果集,你不得不在执行一次查询,取得结果集。

[2]

            String accQrySql = "select * from accounts";
            Connection con = DBUtils.getConnection();
            Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            
                    ResultSet rst = stmt.executeQuery(accQrySql);

                       你可以通过下面的方法来取得结果集的记录数目
                       rst.last();
                       int total = rst.getRow();

                       这时,你可以取得记录数目。

                       如果
while(rst.next()){
........
}      

int total = rst.getRow();
你将得到的total是0

因为,getRow是在遍历结果集的时候的指针,也是在结果集内移动的指针,也就是说,指向了当前的记录索引号,所以,在进行结果集的遍历前和后都被重置成0。
所以,想取得记录的条数,可以把指针移到最后一条记录,然后取得当前记录的编号就是记录的条数。
所以,必须用
rst.last();
之后才能用 rst.getRow()来取得,才能取到值。

注意:想要用这种方法来取得结果集的行数,必须用 可滚动结果集      
    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
否则,你就不能执行
rst.last()
也就不能取得结果集的条数。



|----------------------------------------------------------------------------------------|
                           版权声明  版权所有 @zhyiwww
            引用请注明来源 http://www.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|
posted on 2009-06-19 17:25 zhyiwww 阅读(1960) 评论(2)  编辑  收藏 所属分类: java basic

FeedBack:
# re: 如何取得ResultSet的行数
2009-06-19 19:00 | 心梦帆影
有用,学习了,谢谢你的博文!  回复  更多评论
  
# re: 如何取得ResultSet的行数
2009-06-21 09:40 | wyq
Good  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: