gpt4 book ai didi

Java JDBC 延迟加载的结果集

转载 作者:IT老高 更新时间:2023-10-28 21:08:44 26 4
gpt4 key购买 nike

有没有办法让你通过运行 JDBC 查询获得的 ResultSet 被延迟加载?我希望按照我的要求而不是事先加载每一行。

最佳答案

简答:

在调用 executeQuery() 之前使用 Statement.setFetchSize(1)

长答案:

非常很大程度上取决于您使用的 JDBC 驱动程序。您可能想看看 this page ,它描述了 MySQL、Oracle、SQL Server 和 DB2 的行为。

主要收获:

  • 每个数据库(即每个 JDBC 驱动程序)都有自己的默认行为。
  • 一些驱动程序会尊重 setFetchSize() 而没有任何警告,而另一些驱动程序则需要一些“帮助”。

MySQL 是一个特别奇怪的例子。见 this article .听起来如果你调用 setFetchSize(Integer.MIN_VALUE),那么它会一次下载一行,但不是很清楚。

另一个例子:here's the documentation对于 PostgreSQL 行为。如果开启了自动提交,那么 ResultSet 将一次获取所有的行,但如果它关闭,那么您可以按预期使用 setFetchSize()

要记住的最后一件事:这些 JDBC 驱动程序设置只影响客户端发生的事情。服务器可能仍会将整个结果集加载到内存中,但您可以控制客户端下载结果的方式。

关于Java JDBC 延迟加载的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com