Если ResultSet извлекает и сохраняет значение в памяти, почему объекты ResultSet нельзя использовать после его закрытия? - PullRequest
0 голосов
/ 03 октября 2018

Я новичок в JDBC и использую драйвер MySQL JDBC, и я не понял, как работает набор результатов.

Замечания по реализации API JDBC скажем

По умолчанию ResultSets полностью извлекаются и сохраняются в памяти.В большинстве случаев это наиболее эффективный способ работы, и, благодаря структуре сетевого протокола MySQL, его легче реализовать.

Если объект набора результатов извлекает данные и сохраняет их в памяти, топочему к объекту нет доступа после его закрытия, поскольку он все еще находится в памяти?

Будет ли вызов метода close () обрезать ссылку на данные?Если так, как это делается?

Помогите мне с этим.

1 Ответ

0 голосов
/ 03 октября 2018

Если объект набора результатов извлекает данные и сохраняет их в памяти, то почему к объекту нет доступа после его закрытия, поскольку он все еще находится в памяти?

Потому что это то, чтоJDBC API спецификация говорит, что должно произойти:

"void close() throws SQLException

Освобождает базу данных объекта ResultSet и ресурсы JDBC немедленно, вместо того, чтобы ждать, когда это произойдет, когда это произойдет.автоматически закрывается. "


Будет ли вызов метода close () обрезать ссылку на данные?

Фактически, да.


Если так, как это делается?

Если кратко взглянуть на это, этосложно.Прочитайте исходный код, если вы действительно хотите знать.Это на GitHub:


.... я не понял, как работает набор результатов.

Вам не нужно , нужно , чтобы понять, что использовать JDBC.Вам просто нужно понять, как вы должны использовать ResultSet ... и связанные классы.Javadocs JDBC объясняют , что .

...