Java Resultset中的行存储位置

Java Resultset中的行存储位置,java,jdbc,resultset,execute,Java,Jdbc,Resultset,Execute,执行语句时会发生什么?它是否将所有行检索到内存中?这些行存储在结果集中的什么位置,以及如何将它们提取到java程序中 更新 调用resultSet.next()时它是否去数据库获取一个单行,然后返回java端并显示它?而且ResultSet有cursor它是否类似于数据库cursor?它是特定于驱动程序的。例如,Postgres JDBC默认情况下将所有行加载到内存中,Oracle在服务器端使用游标,只获取部分行。一个常见的误解是,ResultSet必须是某种容器,其中包含查询中的所有行,因此,

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

更新
调用
resultSet.next()时它是否去数据库获取一个单行,然后返回java端并显示它?而且
ResultSet
cursor
它是否类似于数据库
cursor

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

一个常见的误解是,ResultSet必须是某种容器,其中包含查询中的所有行,因此,人们试图在应用程序中传递它,并惊讶地发现,当用于创建它的数据库连接关闭时,它变得无效。结果集更像一个数据库游标,它是用来从数据库中提取行的东西。ResultSet有一个fetch size,它向驱动程序建议一次可以从服务器获取多少行,这样它就可以分块检索行,并在需要时对它们进行缓冲。

因此这意味着它特定于驱动程序