执行声明会发生什么?它是否将所有行检索到内存中?哪些行存储在Resultset
中,以及它们如何被提取到java程序中?
在调用resultSet.next();
是否进入数据库获取singleRow返回java端并显示它?并且ResultSet
cursor
与数据库cursor
类似吗?
答案 0 :(得分:1)
这是特定于驱动程序的。例如。 Postgres JDBC默认将所有行加载到内存中,Oracle在服务器端使用游标并仅获取部分行。
答案 1 :(得分:1)
一个常见的误解是ResultSet必须是某种容器,它包含查询中的所有行,以便人们尝试在应用程序中传递它,并且在用于创建它的数据库连接时它会变得无效关闭。 ResultSet更像是一个数据库游标,它可以用来从数据库中拉回行。 ResultSet有一个提取大小,它向驱动程序建议它一次可以从服务器获取多少行,这样它就可以检索块中的行并在需要时缓冲它们。