我是JDBC的新手,我正在使用mysql JDBC Driver,但我不了解结果集的工作原理。
The JDBC API Implementation notes说
默认情况下,完全检索ResultSet并将其存储在内存中。在大多数情况下,这是最有效的操作方式,并且由于MySQL网络协议的设计,因此更易于实现。
如果结果集对象获取数据并将其存储在内存中,那么为什么关闭该对象后仍无法访问该对象,因为它仍在内存中?
调用close()方法会削减对数据的引用吗?如果可以,怎么办?
帮帮我。
答案 0 :(得分:6)
如果结果集对象获取数据并将其存储在内存中,那么为什么关闭该对象后仍无法访问该对象,因为它仍在内存中?
因为这应该是JDBC API specification所说的:
”
void close() throws SQLException
立即释放此ResultSet对象的数据库和JDBC资源,而不是等待它自动关闭时发生。”
调用close()方法会削减对数据的引用吗?
有效。
如果可以,怎么办?
简要介绍一下,它很复杂。如果您真的想知道,请阅读源代码。在GitHub上:
...。我不了解结果集的工作原理。
您不需要了解使用JDBC。您只需要了解应该如何使用ResultSet
...和相关类。 JDBC javadocs解释了那个。