Такое объект RowSet с возможностью прокрутки по умолчанию?
Из этого Java-учебника:
Объект RowSet можно прокручивать и обновлять по умолчанию, поэтому, заполняя объект RowSet содержимым набора результатов, вы можете эффективно сделать набор результатов прокручиваемым и обновляемым.
а затем из этого последующего Java-учебника:
Передача объектов ResultSet
Самый простой способ создать объект JdbcRowSet - создать объект ResultSet и передать его конструктору JdbcRowSetImpl. Это не только создает объект JdbcRowSet, но также заполняет его данными в объекте ResultSet.
Примечание. Объект ResultSet, который передается в конструктор JdbcRowSetImpl, должен быть прокручиваемым.
Почему набор результатов необходимо прокручивать, если объект RowSet прокручивается по умолчанию? Разве это не главное преимущество упаковки ResultSet в JdbcRowSet?
ОБНОВЛЕНИЕ: непосредственно ссылаясь на интерфейс JdbcRowSet:
* Одно из основных применений объекта JdbcRowSet - сделать объект ResultSet прокручиваемым и обновляемым, если у него нет других возможностей. *
цитата из той же ссылки.
Заранее спасибо.
1 ответ
JdbcRowSetImpl
является - относительно - тонкой оберткой вокруг Resultset
так что требует, чтобы ResultSet
также можно прокручивать, чтобы обеспечить требуемую прокручиваемость, если вы не хотите или не можете предоставить прокручиваемый набор результатов, вы можете использовать CachedRowSet
,
Вопреки тому, что говорится в учебнике, на который вы ссылаетесь, com.sun.rowset.JdbcRowSetImpl
не конвертировать без прокруткиResultSet
в прокручиваемый набор результатов. Реализация просто оборачиваетResultSet
и переадресация звонков прямо на него, поэтому если ResultSet
не прокручивается тогда JdbcRowSet
тоже нет То же самое касается обновляемости.
Учебник кажется противоречивым, потому что после введения вы можете использоватьJdbcRowSet
чтобы сделать результирующий набор прокручиваемым, он отмечает:
JdbcRowSet
объект, созданный сResultSet
объект служит оберткой дляResultSet
объект. ПосколькуRowSet
объект rs является прокручиваемым и обновляемым,jdbcRs
также прокручиваемый и обновляемый. Если вы запустили методcreateStatement
без каких-либо аргументов,rs
не будет прокручиваться или обновляться, и не будетjdbcRs
,
(акцент мой)