Как продублировать базу данных ResultSet - PullRequest
2 голосов
/ 28 июля 2011

Я хотел бы продублировать ResultSet, полученное из базы данных Oracle на странице JSP. Я думал, что простое переназначение поможет, но, похоже, не удастся. Вот мой код:

ResultSet rset;
ResultSet new_rset;

rset = alljobsBean.getStatus(conn,1,max ,min );
new_rset = rset;

Это неправильно? Или есть особый способ дублирования ResultSet s, которого я не знаю?

Ответы [ 3 ]

6 голосов
/ 28 июля 2011

Не существует стандартного способа дублировать ResultSet, за исключением чтения всех данных и их хранения в другом месте. Причина этого заключается в том, что большинство реализаций ResultSet не хранят в нем все результаты, а просто сохраняют соединение с базой данных, которая используется для получения результатов по мере необходимости.

5 голосов
/ 29 июля 2011

new_rset = rset; не выполняет дублирование. Он просто указывает new_rset на тот же объект, на который указывает rset, а new_rset и rset являются простыми ссылками на один и тот же объект в куче.

Если вам необходимо продублировать ResultSet в JSP, рассмотрите возможность использования DTO , который будет содержать все данные в ResultSet, так что вам не нужно хранить ссылку на ResultSet в представлении , Использование DTO позволит вам закрыть соединение после того, как вы закончили читать ResultSet, в то время как вы можете продолжить доступ к данным, возвращаемым запросом SQL, в представлении.

Можно также рассмотреть возможность использования отключенного RowSet вместо ResultSet, если вы намерены отключить доступ к данным, аналогично ResultSet, с дополнительным преимуществом отсутствия сохранить соединение с базой данных.

0 голосов
/ 29 июля 2011

Если вы хотите получить ResultSet из базы данных и показать его на странице JSP, вы можете рассмотреть возможность использования CachedRowSet.Если ваши цели более амбициозны, вы можете рассмотреть WebRowSet.Но для 80% ваших потребностей было бы лучше просто загрузить данные из своего ResultSet в некоторые DTO, прежде чем передавать их в JSP.

...