Интерфейс WebRowSet
- Все суперинтерфейсы:
-
AutoCloseable,CachedRowSet,Joinable,ResultSet,RowSet,Wrapper
- Все известные дочерние интерфейсы:
-
FilteredRowSet,JoinRowSet
public interface WebRowSet extends CachedRowSet
Стандартный интерфейс, который должны реализовывать все реализации WebRowSet.
1.0 Обзор
РеализацияWebRowSetImpl предоставляет стандартную реализацию, которую можно расширять при необходимости.
Стандартное определение XML-схемы WebRowSet доступно по следующему URI:
Оно описывает стандартный формат XML-документа, необходимый при описании объектаRowSet в XML, и должно использоваться всеми стандартными реализациями интерфейса WebRowSet, чтобы обеспечить межплатформенную совместимость. Кроме того, схема WebRowSet использует специальные аннотации SQL/XML-схемы, обеспечивая более высокую межплатформенную совместимость. В настоящее время эта работа ведется в организации ISO. Определение SQL/XML доступно по следующему URI: Определение схемы описывает внутренние данные объекта RowSet в трех различных областях: - свойства (properties) - Эти свойства описывают стандартные свойства поставщика синхронизации, а также более общие свойства
RowSet. - метаданные (metadata) - Это описывает метаданные, связанные со структурой таблицы, управляемой объектом
WebRowSet. Описываемые метаданные тесно связаны с метаданными, доступными в базовом интерфейсеjava.sql.ResultSet. - данные (data) - Это описывает исходные данные (состояние данных с последней загрузки или последней синхронизации объекта
WebRowSet) и текущие данные. Следя за разницей между исходными данными и текущими данными, объектWebRowSetсохраняет возможность синхронизации изменений своих данных с исходным источником данных.
2.0 Состояния WebRowSet
В следующих разделах показано, как реализацияWebRowSet должна использовать XML-схему для описания операций обновления, вставки и удаления и для описания состояния объекта WebRowSet в XML. 2.1 Вывод объекта WebRowSet в XML
В этом примере создается и заполняется объектWebRowSet простой таблицей 2 столбца x 5 строк из источника данных. Наличие 5 строк в объекте WebRowSet позволяет описать их в XML. Метаданные, описывающие различные стандартные свойства JavaBeans, как определено в интерфейсе RowSet, плюс стандартные свойства, определенные в интерфейсе CachedRowSet™ предоставляют ключевые сведения, описывающие свойства WebRowSet. Вывод объекта WebRowSet в XML с использованием стандартных методов writeXml описывает внутренние свойства следующим образом: <properties>
<command>select co1, col2 from test_table</command>
<concurrency>1</concurrency>
<datasource/>
<escape-processing>true</escape-processing>
<fetch-direction>0</fetch-direction>
<fetch-size>0</fetch-size>
<isolation-level>1</isolation-level>
<key-columns/>
<map/>
<max-field-size>0</max-field-size>
<max-rows>0</max-rows>
<query-timeout>0</query-timeout>
<read-only>false</read-only>
<rowset-type>TRANSACTION_READ_UNCOMMITTED</rowset-type>
<show-deleted>false</show-deleted>
<table-name/>
<url>jdbc:thin:oracle</url>
<sync-provider>
<sync-provider-name>.com.rowset.provider.RIOptimisticProvider</sync-provider-name>
<sync-provider-vendor>Oracle Corporation</sync-provider-vendor>
<sync-provider-version>1.0</sync-provider-name>
<sync-provider-grade>LOW</sync-provider-grade>
<data-source-lock>NONE</data-source-lock>
</sync-provider>
</properties> Метаданные, описывающие состав WebRowSet, описаны в XML, как подробно описано ниже. Обратите внимание, что оба столбца описаны между тегами column-definition. <metadata>
<column-count>2</column-count>
<column-definition>
<column-index>1</column-index>
<auto-increment>false</auto-increment>
<case-sensitive>true</case-sensitive>
<currency>false</currency>
<nullable>1</nullable>
<signed>false</signed>
<searchable>true</searchable>
<column-display-size>10</column-display-size>
<column-label>COL1</column-label>
<column-name>COL1</column-name>
<schema-name/>
<column-precision>10</column-precision>
<column-scale>0</column-scale>
<table-name/>
<catalog-name/>
<column-type>1</column-type>
<column-type-name>CHAR</column-type-name>
</column-definition>
<column-definition>
<column-index>2</column-index>
<auto-increment>false</auto-increment>
<case-sensitive>false</case-sensitive>
<currency>false</currency>
<nullable>1</nullable>
<signed>true</signed>
<searchable>true</searchable>
<column-display-size>39</column-display-size>
<column-label>COL2</column-label>
<column-name>COL2</column-name>
<schema-name/>
<column-precision>38</column-precision>
<column-scale>0</column-scale>
<table-name/>
<catalog-name/>
<column-type>3</column-type>
<column-type-name>NUMBER</column-type-name>
</column-definition>
</metadata> После подробного описания того, как описываются свойства и метаданные, следуют подробности о том, как содержимое объекта WebRowSet описывается в XML. Обратите внимание, что это описывает объект WebRowSet , который не претерпел никаких изменений с момента его создания. Тег currentRow сопоставляется с каждой строкой структуры таблицы, которую предоставляет объект WebRowSet. Тег columnValue может содержать либо тег stringData, либо тег binaryData, в зависимости от типа SQL, к которому отображается XML-значение. Тег binaryData содержит данные в кодировке Base64 и обычно используется для данных типа BLOB и CLOB. <data>
<currentRow>
<columnValue>
firstrow
</columnValue>
<columnValue>
1
</columnValue>
</currentRow>
<currentRow>
<columnValue>
secondrow
</columnValue>
<columnValue>
2
</columnValue>
</currentRow>
<currentRow>
<columnValue>
thirdrow
</columnValue>
<columnValue>
3
</columnValue>
</currentRow>
<currentRow>
<columnValue>
fourthrow
</columnValue>
<columnValue>
4
</columnValue>
</currentRow>
</data> 2.2 Удаление строки
Удаление строки в объектеWebRowSet включает простое перемещение к строке, которую необходимо удалить, а затем вызов метода deleteRow, как и в любом другом объекте RowSet. В следующих двух строках кода, где wrs - объект WebRowSet, удаляется третья строка. wrs.absolute(3);
wrs.deleteRow(); Описание в XML показывает, что третья строка помечена как deleteRow, что исключает третью строку в объекте WebRowSet. <data>
<currentRow>
<columnValue>
firstrow
</columnValue>
<columnValue>
1
</columnValue>
</currentRow>
<currentRow>
<columnValue>
secondrow
</columnValue>
<columnValue>
2
</columnValue>
</currentRow>
<deleteRow>
<columnValue>
thirdrow
</columnValue>
<columnValue>
3
</columnValue>
</deleteRow>
<currentRow>
<columnValue>
fourthrow
</columnValue>
<columnValue>
4
</columnValue>
</currentRow>
</data> 2.3 Вставка строки
ОбъектWebRowSet может вставить новую строку, перейдя к строке вставки, вызвав соответствующие методы обновления для каждого столбца в строке, а затем вызвав метод insertRow. wrs.moveToInsertRow(); wrs.updateString(1, "fifththrow"); wrs.updateString(2, "5"); wrs.insertRow();Следующий фрагмент кода изменяет значение второго столбца в только что вставленной строке. Обратите внимание, что этот код применяется, когда новые строки вставляются сразу после текущей строки, поэтому метод
next перемещает курсор на правильную строку. Вызов метода acceptChanges записывает изменение в источник данных. wrs.moveToCurrentRow(); wrs.next(); wrs.updateString(2, "V"); wrs.acceptChanges();Описание этого в XML демонстрирует, где Java-код вставляет новую строку, а затем выполняет обновление вставленной строки по отдельным полям.
<data>
<currentRow>
<columnValue>
firstrow
</columnValue>
<columnValue>
1
</columnValue>
</currentRow>
<currentRow>
<columnValue>
secondrow
</columnValue>
<columnValue>
2
</columnValue>
</currentRow>
<currentRow>
<columnValue>
newthirdrow
</columnValue>
<columnValue>
III
</columnValue>
</currentRow>
<insertRow>
<columnValue>
fifthrow
</columnValue>
<columnValue>
5
</columnValue>
<updateValue>
V
</updateValue>
</insertRow>
<currentRow>
<columnValue>
fourthrow
</columnValue>
<columnValue>
4
</columnValue>
</currentRow>
</date> 2.4 Изменение строки
Изменение строки порождает конкретный XML, который записывает как новое значение, так и значение, которое было заменено. Значение, которое было заменено, становится исходным значением, а новое значение становится текущим. Следующий код перемещает курсор к определенной строке, выполняет некоторые изменения и обновляет строку по завершении.wrs.absolute(5); wrs.updateString(1, "new4thRow"); wrs.updateString(2, "IV"); wrs.updateRow();В XML это описывается тегом
modifyRow. И исходное, и новое значения содержатся в теге для отслеживания исходной строки. <data>
<currentRow>
<columnValue>
firstrow
</columnValue>
<columnValue>
1
</columnValue>
</currentRow>
<currentRow>
<columnValue>
secondrow
</columnValue>
<columnValue>
2
</columnValue>
</currentRow>
<currentRow>
<columnValue>
newthirdrow
</columnValue>
<columnValue>
III
</columnValue>
</currentRow>
<currentRow>
<columnValue>
fifthrow
</columnValue>
<columnValue>
5
</columnValue>
</currentRow>
<modifyRow>
<columnValue>
fourthrow
</columnValue>
<updateValue>
new4thRow
</updateValue>
<columnValue>
4
</columnValue>
<updateValue>
IV
</updateValue>
</modifyRow>
</data>
- С момента:
- 1.5
- См. также:
-
JdbcRowSet,CachedRowSet,FilteredRowSet,JoinRowSet
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static String | PUBLIC_XML_SCHEMA | Общедоступный идентификатор определения XML-схемы, который определяет XML-теги и их допустимые значения для реализации |
static String | SCHEMA_SYSTEM_ID | URL файла определения XML-схемы, который определяет XML-теги и их допустимые значения для реализации |
Поля, объявленные в интерфейсе javax.sql.rowset.CachedRowSet
COMMIT_ON_ACCEPT_CHANGES Поля, объявленные в интерфейсе java.sql.ResultSet
CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | readXml(InputStream iStream) | Считывает поток XML-ввода для заполнения этого объекта |
void | readXml(Reader reader) | Считывает объект |
void | writeXml(OutputStream oStream) | Записывает данные, свойства и метаданные для этого объекта |
void | writeXml(Writer writer) | Записывает данные, свойства и метаданные для этого объекта |
void | writeXml(ResultSet rs,
OutputStream oStream) | Заполняет этот объект |
void | writeXml(ResultSet rs,
Writer writer) | Заполняет этот объект |
Методы, объявленные в интерфейсе javax.sql.rowset.CachedRowSet
acceptChanges, acceptChanges, columnUpdated, columnUpdated, commit, createCopy, createCopyNoConstraints, createCopySchema, createShared, execute, getKeyColumns, getOriginal, getOriginalRow, getPageSize, getRowSetWarnings, getShowDeleted, getSyncProvider, getTableName, nextPage, populate, populate, previousPage, release, restoreOriginal, rollback, rollback, rowSetPopulated, setKeyColumns, setMetaData, setOriginalRow, setPageSize, setShowDeleted, setSyncProvider, setTableName, size, toCollection, toCollection, toCollection, undoDelete, undoInsert, undoUpdate Методы, объявленные в интерфейсе javax.sql.rowset.Joinable
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn Методы, объявленные в интерфейсе java.sql.ResultSet
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, close, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getBoolean, getByte, getByte, getBytes, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getCursorName, getDate, getDate, getDate, getDate, getDouble, getDouble, getFetchDirection, getFetchSize, getFloat, getFloat, getHoldability, getInt, getInt, getLong, getLong, getMetaData, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getObject, getObject, getObject, getObject, getObject, getObject, getRef, getRef, getRow, getRowId, getRowId, getShort, getShort, getSQLXML, getSQLXML, getStatement, getString, getString, getTime, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isClosed, isFirst, isLast, last, moveToCurrentRow, moveToInsertRow, next, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setFetchDirection, setFetchSize, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull Методы, объявленные в интерфейсе javax.sql.RowSet
addRowSetListener, clearParameters, execute, getCommand, getDataSourceName, getEscapeProcessing, getMaxFieldSize, getMaxRows, getPassword, getQueryTimeout, getTransactionIsolation, getTypeMap, getUrl, getUsername, isReadOnly, removeRowSetListener, setArray, setAsciiStream, setAsciiStream, setAsciiStream, setAsciiStream, setBigDecimal, setBigDecimal, setBinaryStream, setBinaryStream, setBinaryStream, setBinaryStream, setBlob, setBlob, setBlob, setBlob, setBlob, setBlob, setBoolean, setBoolean, setByte, setByte, setBytes, setBytes, setCharacterStream, setCharacterStream, setCharacterStream, setCharacterStream, setClob, setClob, setClob, setClob, setClob, setClob, setCommand, setConcurrency, setDataSourceName, setDate, setDate, setDate, setDate, setDouble, setDouble, setEscapeProcessing, setFloat, setFloat, setInt, setInt, setLong, setLong, setMaxFieldSize, setMaxRows, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNClob, setNClob, setNClob, setNClob, setNClob, setNClob, setNString, setNString, setNull, setNull, setNull, setNull, setObject, setObject, setObject, setObject, setObject, setObject, setPassword, setQueryTimeout, setReadOnly, setRef, setRowId, setRowId, setShort, setShort, setSQLXML, setSQLXML, setString, setString, setTime, setTime, setTime, setTime, setTimestamp, setTimestamp, setTimestamp, setTimestamp, setTransactionIsolation, setType, setTypeMap, setUrl, setURL, setUsername Методы, объявленные в интерфейсе java.sql.Wrapper
isWrapperFor, unwrap Поля
PUBLIC_XML_SCHEMA
static final String PUBLIC_XML_SCHEMA
Идентификатор для схемы XML, определяющей теги XML и их допустимые значения для реализации WebRowSet.
- См. также:
- Значения константных полей
SCHEMA_SYSTEM_ID
static final String SCHEMA_SYSTEM_ID
URL файла определения схемы XML, определяющей теги XML и их допустимые значения для реализации WebRowSet.
- См. также:
- Значения константных полей
Методы
readXml
void readXml(Reader reader)
throws SQLException Считывает объект WebRowSet в формате XML из заданного объекта Reader.
- Параметры:
-
reader- потокjava.io.Reader, из которого будет заполнен объектWebRowSet - Исключения:
-
SQLException- если произошла ошибка доступа к базе данных
readXml
void readXml(InputStream iStream)
throws SQLException,
IOException Считывает XML-ввод на основе потока для заполнения объекта WebRowSet.
- Параметры:
-
iStream- потокjava.io.InputStream, из которого будет заполнен объектWebRowSet - Исключения:
-
SQLException- если произошла ошибка доступа к источнику данных -
IOException- если произошла ошибка ввода/вывода
writeXml
void writeXml(ResultSet rs,
Writer writer)
throws SQLException Заполняет объект WebRowSet содержимым объекта ResultSet и записывает его данные, свойства и метаданные в объект Writer в формате XML.
ПРИМЕЧАНИЕ: Курсор WebRowSet может быть перемещен для записи содержимого в источник данных XML. Если реализовано таким образом, курсор обязательно должен быть возвращен в положение, предшествующее вызову writeXml().
- Параметры:
-
rs- объектResultSet, которым заполняется этот объектWebRowSet -
writer- объектjava.io.Writer, в который производится запись. - Исключения:
-
SQLException- если произошла ошибка при записи содержимого набора строк в формате XML
writeXml
void writeXml(ResultSet rs,
OutputStream oStream)
throws SQLException,
IOException Заполняет объект WebRowSet содержимым объекта ResultSet и записывает его данные, свойства и метаданные в объект OutputStream в формате XML.
ПРИМЕЧАНИЕ: Курсор WebRowSet может быть перемещен для записи содержимого в источник данных XML. Если реализовано таким образом, курсор обязательно должен быть возвращен в положение, предшествующее вызову writeXml().
- Параметры:
-
rs- объектResultSet, которым заполняется этот объектWebRowSet -
oStream- потокjava.io.OutputStreamдля записи - Исключения:
-
SQLException- если произошла ошибка доступа к источнику данных -
IOException- если произошла ошибка ввода/вывода
writeXml
void writeXml(Writer writer)
throws SQLException Записывает данные, свойства и метаданные этого объекта WebRowSet в заданный объект Writer в формате XML.
- Параметры:
-
writer- потокjava.io.Writerдля записи - Исключения:
-
SQLException- если произошла ошибка при записи содержимого набора строк в XML
writeXml
void writeXml(OutputStream oStream)
throws SQLException,
IOException Записывает данные, свойства и метаданные этого объекта WebRowSet в заданный объект OutputStream в формате XML.
- Параметры:
-
oStream- потокjava.io.OutputStreamдля записи - Исключения:
-
SQLException- если произошла ошибка доступа к источнику данных -
IOException- если произошла ошибка ввода/вывода
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.sql.rowset/javax/sql/rowset/WebRowSet.html