JavaTM 2 Platform
Standard Ed. 6

javax.sql.rowset
介面 FilteredRowSet

所有父級介面:
CachedRowSet, Joinable, ResultSet, RowSet, WebRowSet, Wrapper

public interface FilteredRowSet
extends WebRowSet

所有標準 FilteredRowSet 實作都必須實作的標準介面。FilteredRowSetImpl 類別提供了可在需要時擴展的參考實作。另外,供應商可通過實作此介面來隨意實作其自己的版本。

1.0 背景

有時 RowSet 物件需要對其內容進行某種程度的過濾。一種可能的解決方案是為所有標準的 RowSet 實作提供一種查詢語言;但是這對諸如非連接 RowSet 物件之類別的輕量級元件而言是一種不切實際的方法。FilteredRowSet 介面尋求在不提供重量級查詢語言和這種查詢語言所需處理的情況下解決這一需求問題。

JDBC FilteredRowSet 標準實作可實作 RowSet 介面並擴展 CachedRowSetTM 類別。CachedRowSet 類別提供了一組受保護的鼠標操縱方法,FilteredRowSet 實作可覆寫這些方法將來提供過濾支持。

2.0 Predicate 共享

如果使用父介面中繼承的 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() // only names from "Alpha" to "Bravo" will be returned
 
在上面的範例中,我們初始化了一個 Range 物件,它實作了 Predicate 介面。此物件表示以下約束條件:從此 FilteredRowSet 物件輸出或修改的所有行必須在列 'columnName' 中,在值 'Alpha' 和 'Bravo' 之間(包括這兩個值)。如果對不包含過濾器範圍內的資料的 FilteredRowSet 物件應用過濾器,則不返回任何行。

此框架允許多個類別實作 predicate,從而能以組合方式使用其來達到所需的過濾結果,無需進行查詢語言處理。

4.0 更新 FilteredRowSet 物件

FilteredRowSet 物件上設置的 predicate 對 RowSet 物件中的所有行應用了一個標準,用來管理 RowSet 物件中的一個行子集。此標準控制可見的行子集,定義可以被修改、刪除或插入的列。

因此,必須將 FilteredRowSet 物件上設置的 predicate 視為雙向的,將設置的標準視為 FilteredRowSet 物件的所有視圖和更新的控制機制。試圖更新違反該標準的 FilteredRowSet 將導致拋出 SQLException 物件。

可在任何時間向 FilteredRowSet 實例應用新的 Predicate 物件來修改 FilteredRowSet 範圍標準。如果沒有檢測到對 FilteredRowSet 物件的任何附加參考,則修改範圍標準是可能的。新的過濾器對 FilteredRowSet 物件內所執行的標準會立即產生影響,所有後續視圖和更新都將受到類似執行的影響。

5.0 過濾器外部各行的行為

在移除過濾器或應用新的過濾器之前,不能修改那些位於 FilteredRowSet 物件上設置的過濾器範圍外的各行。

此外,只有位於過濾器範圍內的各行才與資料源同步。


欄位摘要
 
從介面 javax.sql.rowset.WebRowSet 繼承的欄位
PUBLIC_XML_SCHEMA, SCHEMA_SYSTEM_ID
 
從介面 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
 
方法摘要
 Predicate getFilter()
          獲取此 FilteredRowSet 物件的活動過濾器。
 void setFilter(Predicate p)
          將給定的 Predicate 物件應用到此 FilteredRowSet 物件。
 
從介面 javax.sql.rowset.WebRowSet 繼承的方法
readXml, readXml, writeXml, writeXml, writeXml, writeXml
 
從介面 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 繼承的方法
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.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, 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, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull
 
從介面 java.sql.Wrapper 繼承的方法
isWrapperFor, unwrap
 
從介面 javax.sql.rowset.Joinable 繼承的方法
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn
 

方法詳細資訊

setFilter

void setFilter(Predicate p)
               throws SQLException
將給定的 Predicate 物件應用到此 FilteredRowSet 物件。過濾器同時控制入境 (inbound) 視圖和出境 (outbound) 視圖,限制哪些行是可見的,哪些行是可以操作的。

可以在任何時間設置新的 Predicate 物件。這樣可以更改 RowSet 物件資料上的約束條件。另外,在運行時修改過濾器會出現問題,所以多個元件可以在一個 FilteredRowSet 物件上進行操作。當 FilteredRowSet 物件的底層 Predicate 物件更改時,應用程序開發人員必須負責管理對 FilteredRowSet 物件的多重處理。

參數:
p - Predicate 物件,它定義了此 FilteredRowSet 物件的過濾器。設置 null 值將清除 predicate,允許所有行成為可見行。
拋出:
SQLException - 如果在設置 Predicate 物件時發生錯誤

getFilter

Predicate getFilter()
獲取此 FilteredRowSet 物件的活動過濾器。

返回:
FilteredRowSet 物件的 Predicate;如果沒有設置過濾器,則返回 null

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only