获取JDBC中的ResultSet的记录的条数

本文介绍了三种在Java中使用JDBC的ResultSetAPI获取记录总数的方法:通过getRow方法定位到结果集的最后一行;循环遍历整个结果集;使用SQL的count函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC中的ResultSet API没有直接获取记录条数的方法,现介绍几个: 

方法一:利用ResultSet的getRow方法来获得ResultSet的总行数
Java代码
ResultSet rs;   
rs.last(); //移到最后一行   
int rowCount = rs.getRow(); //得到当前行号,也就是记录数   
rs.beforeFirst(); //如果还要用结果集,就把指针再移到初始化的位置  


方法二:利用循环ResultSet的元素来获得ResultSet的总行数
Java代码
ResultSet rs;   
int rowCount = 0;    
while(rset.next())    
{    
    rowCount++;    
}  


方法三:利用sql语句中的count函数获得ResultSet的总行数
Java代码
String sql = "select count(*) record_ from ( select * from yourtable t where t.column_ = 'value_' )";   
ResultSet rs = ps.executeQuery(sql);    
int rowCount = 0;    
if(rs.next())    
{    
    rowCount=rs.getInt("record_");    
} 




ResultSet rs =  stmt.executeQuery("select count(*) from table");
rs.next();
int i = rs.getInt(1);


### JDBC ResultSet 获取数据规则 #### 创建连接并执行查询 为了从数据库中获取数据,首先需要创建一个 `Connection` 对象来建立到数据库的物理连接。接着使用此连接对象创建一个 `Statement` 或者更常用的 `PreparedStatement` 来准备 SQL 查询语句。 ```java // 假设已经获得了 Connection 连接 conn String query = "SELECT id, name, age FROM users"; try (PreparedStatement pstmt = conn.prepareStatement(query)) { try (ResultSet rs = pstmt.executeQuery()) { // 下面会介绍如何处理这个 ResultSet 对象 } } ``` #### 遍历 ResultSet 并读取数据 一旦有了 `ResultSet` 实例,就可以调用其方法遍历每一行记录,并从中提取字段值。通常情况下,这涉及到循环结构以及针对每列的数据访问操作: - 使用 `next()` 方法迭代游标位置至下一记录; - 利用特定类型的 getter 函数(如 getInt(), getString() 等)按索引或名称检索各列的具体数值; ```java List<User> userList = new ArrayList<>(); while (rs.next()) { // 移动指针到下一个结果集目 int id = rs.getInt("id"); String name = rs.getString(2); // 可以通过列名也可以通过序号获取 int age = rs.getInt("age"); User user = new User(id, name, age); userList.add(user); } ``` 对于大型数据集而言,考虑到内存占用等因素,在某些场景下可能更适合采用流式处理方式或是利用缓存机制,比如可以考虑使用 `OracleCachedRowSet` 类型的对象[^2]。 #### 关闭资源 当完成所有的数据读取之后,应当及时释放所持有的数据库连接和其他相关资源,防止潜在的泄漏问题发生。Java7及以上版本支持自动管理资源的方式——即所谓的 Try-With-Resources 结构,上述例子也展示了这种方式的应用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值