- 所有超级接口:
-
AutoCloseable
,CachedRowSet
,Joinable
,ResultSet
,RowSet
,WebRowSet
,Wrapper
所有标准的4.0 更新
设置在
FilteredRowSet
实现必须实现的标准接口。 FilteredRowSetImpl
类提供了参考实现,如果需要,可以进行扩展。或者,供应商可以通过实现此接口来自由实现自己的版本。
1.0 背景
有时RowSet
对象需要对其内容进行一定程度的过滤。一种可能的解决方案是为所有标准RowSet
实现提供查询语言;然而,对于断开连接的RowSet
对象等轻量级组件,这是一种不切实际的方法。 FilteredRowSet
接口旨在解决这一需求,而无需提供重量级查询语言以及该查询语言所需的处理。
JDBC FilteredRowSet
标准实现实现了RowSet
接口并扩展了CachedRowSet
类。 CachedRowSet
类提供了一组受保护的游标操作方法,FilteredRowSet
实现可以重写这些方法以提供过滤支持。
2.0 谓词共享
如果使用父接口中继承的createShared
方法共享FilteredRowSet
实现,则所有FilteredRowSet
实例克隆都应共享不经修改的Predicate
。
3.0 用法
通过实现Predicate
(请参阅Predicate类JavaDoc中的示例),可以按照以下描述使用FilteredRowSet
。
FilteredRowSet frs = new FilteredRowSetImpl();
frs.populate(rs);
Range name = new Range("Alpha", "Bravo", "columnName");
frs.setFilter(name);
frs.next() // 仅返回从"Alpha"到"Bravo"的名称
在上面的示例中,我们初始化了一个实现Predicate
接口的Range
对象。此对象表达了以下约束:从此FilteredRowSet
对象输出或修改的所有行必须在'columnName'列中的'Alpha'和'Bravo'值之间,两个值都包括在内。如果对不包含在过滤器范围内的FilteredRowSet
对象应用过滤器,则不会返回任何行。
此框架允许组合使用多个实现谓词的类,以实现所需的过滤结果,而无需进行查询语言处理。
4.0 更新FilteredRowSet
对象
设置在FilteredRowSet
对象上的谓词对RowSet
对象中的所有行应用条件,以管理RowSet
对象中的行子集。此条件管理可见的行子集,并定义哪些行可以被修改、删除或插入。
因此,在FilteredRowSet
对象上设置的谓词必须被视为双向的,并且设置的条件作为所有视图和更新到FilteredRowSet
对象的门控机制。任何试图更新违反条件的FilteredRowSet
都将导致抛出SQLException
对象。
FilteredRowSet
范围条件可以通过在任何时间将新的Predicate
对象应用于FilteredRowSet
实例来修改。如果未检测到对FilteredRowSet
对象的其他引用,则可以这样做。在FilteredRowSet
对象内,新的过滤器立即影响条件执行,并且所有后续视图和更新都将受到类似的执行约束。
5.0 过滤器外行为
在FilteredRowSet
对象上设置的过滤器之外的行在移除过滤器或应用新过滤器之前无法修改。
此外,只有在过滤器范围内的行才会与数据源同步。
- 自版本:
- 1.5
-
Field Summary
Fields declared in interface javax.sql.rowset.CachedRowSet
COMMIT_ON_ACCEPT_CHANGES
Fields declared in interface 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
Fields declared in interface javax.sql.rowset.WebRowSet
PUBLIC_XML_SCHEMA, SCHEMA_SYSTEM_ID
-
Method Summary
Methods declared in interface 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
Methods declared in interface javax.sql.rowset.Joinable
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn
Methods declared in interface 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
Methods declared in interface 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
Methods declared in interface javax.sql.rowset.WebRowSet
readXml, readXml, writeXml, writeXml, writeXml, writeXml
Methods declared in interface java.sql.Wrapper
isWrapperFor, unwrap
-
Method Details
-
setFilter
将给定的Predicate
对象应用于此FilteredRowSet
对象。该过滤器控制入站和出站视图,限制哪些行可见,哪些行可以操作。可以随时设置新的
Predicate
对象。这将改变RowSet
对象数据的约束。此外,在运行时修改过滤器会出现问题,因为多个组件可能正在操作一个FilteredRowSet
对象。应用程序开发人员必须负责管理对FilteredRowSet
对象的多个句柄,当它们的底层Predicate
对象发生变化时。- 参数:
-
p
- 为此FilteredRowSet
对象定义过滤器的Predicate
对象。设置为null值将清除谓词,使所有行可见。 - 抛出:
-
SQLException
- 设置Predicate
对象时发生错误时
-
getFilter
Predicate getFilter()检索此FilteredRowSet
对象的活动过滤器。- 返回:
-
p为此
FilteredRowSet
对象的Predicate
;如果未设置过滤器,则为null
。
-