结果集中的行存储位置

Row storage location in Resultset

执行语句会发生什么?它是否将所有行检索到内存中?行存储在 Resultset 中的位置,以及如何将它们提取到 java 程序中?

更新

在调用 resultSet.next(); 时,它是否会去数据库获取一个单行返回 java 端并显示它? ResultSetcursor 是否类似于数据库 cursor

它是特定于驱动程序的。例如。 Postgres JDBC 默认将所有行加载到内存,Oracle 在服务器端使用游标并仅获取部分行。

一个常见的误解是 ResultSet 必须是某种包含查询中所有行的容器,因此人们试图在应用程序中传递它,但惊讶的是当数据库连接过去时它变得无效创建它关闭。 ResultSet 更像是一个数据库游标,它是您用来从数据库中拉回行的东西。 ResultSet 有一个获取大小,它向驱动程序建议它一次可以从服务器获取多少行,以便它可以分块检索行并在需要时缓冲它们。