快速业务通道

如何取得ResultSet的行数 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

如何取得ResultSet的行数

时间:2011-03-26 blogjava zhyiwww

如果你想的取得一个结果集的行数,怎么办?

在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()

也就不能取得结果集的条数。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号