我是jdbc新手,正在使用MySQLJDBC驱动程序,我还不了解结果集是如何工作的。jdbcapi实现说明说默认情况下,结果集被完全检索并存储在内存中。在大多数情况下,这是最有效的操作方式,而且由于mysql网络协议的设计,更容易实现。如果resultset对象获取数据并存储在内存中,那么为什么关闭对象后不访问它,因为它仍然在内存中?调用close()方法会切断对数据的引用吗?如果是这样,怎么做?帮我一把。
roejwanj1#
如果resultset对象获取数据并存储在内存中,那么为什么关闭对象后不访问它,因为它仍然在内存中?因为这就是jdbc api规范所说的应该发生的:" void close() throws SQLException 立即释放此resultset对象的数据库和jdbc资源,而不是等待它自动关闭时发生这种情况。”调用close()方法会切断对数据的引用吗?实际上是的。如果是这样,怎么做?简单看了一下,情况就复杂了。如果你真的想知道,请阅读源代码。在github上:https://github.com/mysql/mysql-connector-j.... 我不明白结果集是如何工作的。使用jdbc不需要理解这一点。你只需要了解你应该如何使用 ResultSet ... 以及相关的课程。jdbcjavadocs解释了这一点。
void close() throws SQLException
ResultSet
1条答案
按热度按时间roejwanj1#
如果resultset对象获取数据并存储在内存中,那么为什么关闭对象后不访问它,因为它仍然在内存中?
因为这就是jdbc api规范所说的应该发生的:
"
void close() throws SQLException
立即释放此resultset对象的数据库和jdbc资源,而不是等待它自动关闭时发生这种情况。”调用close()方法会切断对数据的引用吗?
实际上是的。
如果是这样,怎么做?
简单看了一下,情况就复杂了。如果你真的想知道,请阅读源代码。在github上:
https://github.com/mysql/mysql-connector-j
.... 我不明白结果集是如何工作的。
使用jdbc不需要理解这一点。你只需要了解你应该如何使用
ResultSet
... 以及相关的课程。jdbcjavadocs解释了这一点。