如何取得ResultSet的行数

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

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

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

时间: 2024-09-11 23:03:05

如何取得ResultSet的行数的相关文章

java 获取ResultSet记录行与列实现程序

获取ResultSet记录列数核心代码    代码如下 复制代码 ResultSetMetaData rsmd = this.rs.getMetaData(); this.columnCount = rsmd.getColumnCount(); java获取数据行数的代码如下:  代码如下 复制代码 Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)

win8中怎么修改鼠标滚轮每次滚动行数

  1.首先,咱们需要返回到win8系统的传统桌面位置,之后,咱们同时按下win8电脑键盘上的win+C快捷键打开电脑的超级按钮,在这个超级按钮中,咱们就可以看到设置选项了,咱们点击这个设置选项.   2.在打开的设置窗口中,咱们依次点击"更改电脑设置"选项--然后点击"电脑和设备"--"鼠标和触摸板",在新打开的窗口中,咱们就可以看到设置滚轮的选项了,我们可以设置滚动一格为一个屏幕,或者自定义滚动一次的行数,至于到底要如何进行设置,大家可以根据

txt文件-c++如何控制文件输出的行数?

问题描述 c++如何控制文件输出的行数? 我有一个几千行的txt文件,里面都是ascall字符,我想每次读取30行在控制台显示然后清屏,延迟0.1s后再输出接下来的30行,也就是第一次控制台输出1-30行,清屏,第二次输出31-60行,这样一直下去,直到文件末尾 1. 我希望在每次在控制台显示的时候一次性显示30行的字符,必须一次性显示30行,肉眼不能察觉到是一行一行显示出来的. 解决方案 自己做个计数就好了,30行后,计数清零,重新计数 解决方案二: #include #include #in

Shell或命令行计算数组或文件的行数和列数

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1630920 (一)闲聊Linux Shell 编程 都说中国文化博大精深(例如汉字),但作为操作系统中的佼佼者,Linux虽然时间并不长,但同样也是博大精深.谁也不敢说自己已经熟练的掌握了Linux中所有的内容,除了知识点众多以外,快速的发展和更新使得Linux越来越强大,也使得Linux在短时间内越来越难掌握.所

c++-C++如何快速统计txt文件行数?

问题描述 C++如何快速统计txt文件行数? C++如何快速统计txt文件行数?大概有100W行,用getline一行一行读计数太慢. 解决方案 内存映射,逐块读取,查找换行符 解决方案二: 当然是查找换行符回车符的个数啦. 解决方案三: 100万行,一行算100个字节,那么大约100兆,也不是很吓人.可以一次性读取,然后多线程(你有几个cpu核就用几个)分块统计分行符. 解决方案四: 先读入内存 直接用remove('n')返回值就是行数 解决方案五: FILE *pFile; int c;

在adodb.php中有没有一个方法可以返回 update语句,影响的行数

问题描述 在adodb.php中有没有一个方法可以返回 update语句,影响的行数 如题在adodb.php中有没有一个方法可以返回 update语句,影响的行数

表格-RDLC打印模板 如何固定行数数

问题描述 RDLC打印模板 如何固定行数数 RDLC打印模板 如何固定行数数 想把表格固定为5行,不够5行补空行 解决方案 可以在查询的时候在数据源上就补充上空行. 解决方案二: 自己根据返回的数据填充对应行数数据

js获取table行数:js获取table中鼠标点的行号和内容

<html><head><script language="javascript">function doclick(){var td = event.srcelement; // 通过event.srcelement 获取激活事件的对象 tdalert("行号:" + (td.parentelement.rowindex + 1) + ",内容:" + td.innertext);var tab = docu

[水晶报表]RECORDNUMBER应用之控制每页显示行数及隔行换色.

控制|水晶报表|显示 经常有人问到如何限定每页显示行数的限定,还看到有人用拉高字段的方法.呵呵 下面简单说一下,其中公式用的是 Crystal语法,数据库用的是水晶报表自己带的Access数据库我以Orders表为例. 首先选几个字段作个简单的报表,,画个小格子,预览一下.每行的数据显示满页,共21页 我们限定每页显示10行 在设计节上点右键选"节专家",操作"详细资料"节.后面几步依图所示,加一个公式控制页面显示 再预览的时候,就发现已经是84页了,如我们所要:)