如果resultset获取值并将其存储在内存中,为什么resultset对象在关闭后不能使用?

wwodge7n  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(279)

我是jdbc新手,正在使用MySQLJDBC驱动程序,我还不了解结果集是如何工作的。
jdbcapi实现说明说
默认情况下,结果集被完全检索并存储在内存中。在大多数情况下,这是最有效的操作方式,而且由于mysql网络协议的设计,更容易实现。
如果resultset对象获取数据并存储在内存中,那么为什么关闭对象后不访问它,因为它仍然在内存中?
调用close()方法会切断对数据的引用吗?如果是这样,怎么做?
帮我一把。

roejwanj

roejwanj1#

如果resultset对象获取数据并存储在内存中,那么为什么关闭对象后不访问它,因为它仍然在内存中?
因为这就是jdbc api规范所说的应该发生的:
" void close() throws SQLException 立即释放此resultset对象的数据库和jdbc资源,而不是等待它自动关闭时发生这种情况。”
调用close()方法会切断对数据的引用吗?
实际上是的。
如果是这样,怎么做?
简单看了一下,情况就复杂了。如果你真的想知道,请阅读源代码。在github上:
https://github.com/mysql/mysql-connector-j
.... 我不明白结果集是如何工作的。
使用jdbc不需要理解这一点。你只需要了解你应该如何使用 ResultSet ... 以及相关的课程。jdbcjavadocs解释了这一点。

相关问题