|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
public interface FilteredRowSet
所有標準 FilteredRowSet 實作都必須實作的標準介面。FilteredRowSetImpl 類別提供了可在需要時擴展的參考實作。另外,供應商可通過實作此介面來隨意實作其自己的版本。
RowSet 物件需要對其內容進行某種程度的過濾。一種可能的解決方案是為所有標準的 RowSet 實作提供一種查詢語言;但是這對諸如非連接 RowSet 物件之類別的輕量級元件而言是一種不切實際的方法。FilteredRowSet 介面尋求在不提供重量級查詢語言和這種查詢語言所需處理的情況下解決這一需求問題。
JDBC FilteredRowSet 標準實作可實作 RowSet 介面並擴展 CachedRowSetTM 類別。CachedRowSet 類別提供了一組受保護的鼠標操縱方法,FilteredRowSet 實作可覆寫這些方法將來提供過濾支持。
createShared 方法共享了 FilteredRowSet 實作,則應所有 FilteredRowSet 實例副本應共享 Predicate 並不做任何修改。
通過實作 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,從而能以組合方式使用其來達到所需的過濾結果,無需進行查詢語言處理。
FilteredRowSet 物件FilteredRowSet 物件上設置的 predicate 對 RowSet 物件中的所有行應用了一個標準,用來管理 RowSet 物件中的一個行子集。此標準控制可見的行子集,定義可以被修改、刪除或插入的列。
因此,必須將 FilteredRowSet 物件上設置的 predicate 視為雙向的,將設置的標準視為 FilteredRowSet 物件的所有視圖和更新的控制機制。試圖更新違反該標準的 FilteredRowSet 將導致拋出 SQLException 物件。
可在任何時間向 FilteredRowSet 實例應用新的 Predicate 物件來修改 FilteredRowSet 範圍標準。如果沒有檢測到對 FilteredRowSet 物件的任何附加參考,則修改範圍標準是可能的。新的過濾器對 FilteredRowSet 物件內所執行的標準會立即產生影響,所有後續視圖和更新都將受到類似執行的影響。
FilteredRowSet 物件上設置的過濾器範圍外的各行。
此外,只有位於過濾器範圍內的各行才與資料源同步。
| 欄位摘要 |
|---|
| 從介面 javax.sql.rowset.WebRowSet 繼承的欄位 |
|---|
PUBLIC_XML_SCHEMA, SCHEMA_SYSTEM_ID |
| 從介面 javax.sql.rowset.CachedRowSet 繼承的欄位 |
|---|
COMMIT_ON_ACCEPT_CHANGES |
| 方法摘要 | |
|---|---|
Predicate |
getFilter()
獲取此 FilteredRowSet 物件的活動過濾器。 |
void |
setFilter(Predicate p)
將給定的 Predicate 物件應用到此 FilteredRowSet 物件。 |
| 從介面 javax.sql.rowset.WebRowSet 繼承的方法 |
|---|
readXml, readXml, writeXml, writeXml, writeXml, writeXml |
| 從介面 java.sql.Wrapper 繼承的方法 |
|---|
isWrapperFor, unwrap |
| 從介面 javax.sql.rowset.Joinable 繼承的方法 |
|---|
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn |
| 方法詳細資訊 |
|---|
void setFilter(Predicate p)
throws SQLException
Predicate 物件應用到此 FilteredRowSet 物件。過濾器同時控制入境 (inbound) 視圖和出境 (outbound) 視圖,限制哪些行是可見的,哪些行是可以操作的。
可以在任何時間設置新的 Predicate 物件。這樣可以更改 RowSet 物件資料上的約束條件。另外,在運行時修改過濾器會出現問題,所以多個元件可以在一個 FilteredRowSet 物件上進行操作。當 FilteredRowSet 物件的底層 Predicate 物件更改時,應用程序開發人員必須負責管理對 FilteredRowSet 物件的多重處理。
p - Predicate 物件,它定義了此 FilteredRowSet 物件的過濾器。設置 null 值將清除 predicate,允許所有行成為可見行。
SQLException - 如果在設置 Predicate 物件時發生錯誤Predicate getFilter()
FilteredRowSet 物件的活動過濾器。
FilteredRowSet 物件的 Predicate;如果沒有設置過濾器,則返回 null。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。