resultset获取行数(java里进行数据库更新时,怎么取得影响的行数值)

本文目录
java里进行数据库更新时,怎么取得影响的行数值
1、用sql语句中的count函数,然后从ResultSet里获取第一行的数字:
try {
ResultSet resultSet = statement.executeQuery("select count(1) as nRrow from tableName");//使用sql的count函数
resultSet.next();//移动到第一行
int rowCount = resultSet.getInt("rowCount");//获取行数值
} catch (Exception e) {
e.printStackTrace();
}
这种方法不用遍历整个数据集,节省了运算时间,但是,此方法只能用于获取数据表的行数,不能获取表中的具体数据。所以如果只是想知道数据表的行数,此方法非常适合。
2、遍历Resultset,用一个变量累加记录行数,代码如下:
int nRow = 0;
try {
ResultSet resultSet = statement.executeQuery("select * from tableName");//使用select语句查询数据表
while(resultSet.next()){//遍历
nRow++;
}
} catch (SQLException e1) {
e1.printStackTrace();
}
next 函数将指针移动到下一行;因为该方法在 ResultSet 对象中没有下一行时返回 false,所以可以在 while 循环中使用它来迭代结果集。
这种方法需要遍历整个结果集,在遍历过程中可以获取数据;
但是在遍历完之后,不能再使用结果集了,因为这时候指针已经移动到结果集的外面了,不能返回到结果集的初始处。
如何获取ResultSet总行数
取得ResultSet行数的方法主要有以下几种:
1. 用ResultSet的getRow方法来取得总行数;
2. 利用循环ResultSet元素的方法取得总行数 ResultSet rset = stmt.executeQuery(select * from table); int rowCount = 0; while(rset.next()) { ?? rowCount++;} ;
3. 利用SQL语句来取得ResultSet的总行数 ResultSet rset = stmt.executeQuery(select count(*) totalCount from yourTableName); int rowCount = 0; if(rset.next()) { ?? rowCount=rset .getInt(totalCount );}rowCount就是ResultSet的总行数。
ResultSet,数据库结果集的数据表,通常通过执行查询数据库的语句生成。
如何取得ResultSet的行数
在ResultSet对象里面,我们找不到取得结果行数的办法。
其实我们通常的解决方法无非有一下几种:
Statement stmt = con.createStatement();
String sqlStr = "count(*) as total ";
ResultSet rst = stmt.executeQuery(sqlStr);
rst.next();
int total = rst.getInt("total");
缺点:如果想要遍历结果集,你不得不在执行一次查询,取得结果集。
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()
也就不能取得结果集的条数。

更多文章:
p站no valid source(万能的大佬们新人求助,p站登录一直显示错误)
2026年8月31日 15:45
登录界面背影图片(为什么微信的开机画面是地球,有什么含义吗)
2025年11月8日 14:00
什么时候用xhtml(xhtml html该学哪一个是学了第一个还可以学第二个 两个都有好处吗 还是说两个用处有点类似)
2025年11月16日 23:30
springboot其实就是spring(Spring boot与Spring cloud 是什么关系)
2025年7月23日 00:15
personality development课文翻译(哪位仁兄帮忙写写一片英语作文啊,题名《个性发展》,拜托啦~~~)
2026年4月29日 13:15
show的用法(show的用法和意思是不是和show off一样啊)
2025年9月7日 05:45
finder图标是哪个(mac有没有类似于“我的电脑”的地方 桌面东西太多了不知道放哪)
2026年6月1日 22:45
directx最新版官方下载(~~~~~Directx 最新版本是多少在那里下载~~~~)
2026年1月4日 00:15
php各个版本下载(如何再wamp 下安装多个版本的php)
2026年7月26日 21:00
associate的名词怎么写(associate是可数名词吗)
2026年7月29日 01:15
datagridview删除(winform怎么删除datagridview选中的一行并更)
2026年3月29日 09:30











