Resultset中的行存储位置

时间:2015-09-23 12:18:41

标签: java jdbc resultset execute

执行声明会发生什么?它是否将所有行检索到内存中?哪些行存储在Resultset中,以及它们如何被提取到java程序中?

更新

在调用resultSet.next();是否进入数据库获取singleRow返回java端并显示它?并且ResultSet cursor与数据库cursor类似吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

一个常见的误解是ResultSet必须是某种容器,它包含查询中的所有行,以便人们尝试在应用程序中传递它,并且在用于创建它的数据库连接时它会变得无效关闭。 ResultSet更像是一个数据库游标,它可以用来从数据库中拉回行。 ResultSet有一个提取大小,它向驱动程序建议它一次可以从服务器获取多少行,这样它就可以检索块中的行并在需要时缓冲它们。