温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Cursor游标与ResultSet区别

发布时间:2026-08-31 18:47:47 来源:亿速云 阅读:81 作者:小樊 栏目:数据库

在数据库编程(尤其是 JDBC)中,**Cursor(游标)ResultSet(结果集)**经常被一起提到,但两者所处的层次和含义不同。下面从概念、所在层次、用法和区别几个方面说明。


一、基本概念

1. Cursor(游标)

  • 数据库层面的概念
  • 是数据库内部用于对查询结果集进行“逐行遍历”的指针
  • 通常出现在:
    • 存储过程(如 PL/SQL、T-SQL)
    • 数据库服务器
  • 游标用于:
    • 定位当前行
    • 向前/向后移动
    • 逐行处理数据

示例(数据库游标):

DECLARE cur CURSOR FOR SELECT * FROM user;
OPEN cur;
FETCH NEXT FROM cur;
CLOSE cur;

2. ResultSet(结果集)

  • JDBC / 应用层面的概念
  • 是 Java 程序从数据库查询后拿到的数据对象
  • 本质上是对数据库游标结果的一种封装
  • 通过 Statement.executeQuery() 返回

示例(Java):

ResultSet rs = stmt.executeQuery("SELECT * FROM user");
while (rs.next()) {
    rs.getString("name");
}

二、核心区别对比

对比项 Cursor(游标) ResultSet(结果集)
所在位置 数据库端 应用程序端(JDBC)
使用语言 SQL / 存储过程 Java
控制方式 数据库指令控制 Java API 控制
是否可见 对应用透明 应用直接操作
典型用途 存储过程逐行处理 应用读取查询结果

三、ResultSet 与 Cursor 的关系

ResultSet 背后通常依赖数据库游标实现

  • 当你执行查询时:
    1. 数据库创建游标
    2. 将结果通过游标返回
    3. JDBC 封装为 ResultSet
  • rs.next() 实际上是在移动数据库游标

但在 Java 应用中,你不需要直接操作游标,只操作 ResultSet。


四、常见误区

❌ 误区1:ResultSet 就是 Cursor

✅ 准确说法:
ResultSet 是对 Cursor 结果的封装


❌ 误区2:游标只能在 Java 里用

✅ 游标主要在数据库中(如存储过程)


❌ 误区3:游标比 ResultSet 快

  • 在存储过程中处理大量数据:游标可能更高效
  • 在应用中:ResultSet 更方便、可控

五、什么时候会直接接触“游标”

  • 存储过程
  • 使用 数据库函数返回多行数据
  • 数据库调优时(游标开销、锁定)

六、一句话总结

Cursor 是数据库内部的“指针”,ResultSet 是 Java 程序中看到的“结果封装”。

如果你是在学习 JDBC、存储过程,或遇到“游标未关闭 / ResultSet 已关闭”等问题,也可以告诉我具体场景。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI