public interface Predicate
FilteredRowSet
对象提供FilteredRowSet
来描述其过滤器。
Predicate
接口是应用程序可以实现的标准接口,用于定义要应用于FilteredRowSet
对象的过滤器。
A FilteredRowSet
对象消耗此接口的实现,并强制执行方法evaluate
定义的evaluate
。
A FilteredRowSet
对象以双向方式实施过滤器约束:它仅输出在过滤器的约束内的行;
相反,它仅插入,修改或更新在过滤器的约束内的行。
FilteredRowSet
。
这个接口必须实现。
此时,JDBC RowSet实现(JSR-114)不指定任何标准过滤器定义。
通过指定一个标准装置和机构,用于一系列的过滤器来进行定义,并与两者的参考和供应商实现部署FilteredRowSet
接口,这允许的柔性和应用动机实现Predicate
出现。
示例实现将如下所示:
public class Range implements Predicate { private int[] lo; private int[] hi; private int[] idx; public Range(int[] lo, int[] hi, int[] idx) { this.lo = lo; this.hi = hi; this.idx = idx; } public boolean evaluate(RowSet rs) { // Check the present row determine if it lies // within the filtering criteria. for (int i = 0; i < idx.length; i++) { int value; try { value = (Integer) rs.getObject(idx[i]); } catch (SQLException ex) { Logger.getLogger(Range.class.getName()).log(Level.SEVERE, null, ex); return false; } if (value < lo[i] && value > hi[i]) { // outside of filter constraints return false; } } // Within filter constraints return true; } }
上面的例子实现了一个简单的范围谓词。 请注意,实现应该不是必需的,以提供String
和基于整数索引的构造函数来提供使用列标识约定的JDBC RowSet实现应用程序。
Modifier and Type | Method and Description |
---|---|
boolean |
evaluate(Object value, int column)
该方法由
FilteredRowSet 对象调用,以检查该值是否位于使用
setFilter() 方法设置的
setFilter() 条件(或存在多个约束的条件)
setFilter() 。
|
boolean |
evaluate(Object value, String columnName)
该方法由
FilteredRowSet 对象调用,以检查该值是否在使用setFilter方法设置的过滤条件之间。
|
boolean |
evaluate(RowSet rs)
该方法通常称为
FilteredRowSet 对象内部方法(不是公共的),它控制
RowSet 对象的光标从行移动到下一个。
|
boolean evaluate(RowSet rs)
FilteredRowSet
对象内部方法(非公开),可控制RowSet
对象的光标从行移动到下一个。
另外,如果这个内部方法将光标移动到已被删除的行上,内部方法将继续使用光标,直到找到有效的行。
rs
-该
RowSet
被评估
true
如果在过滤器中有更多行;
false
否则
boolean evaluate(Object value, int column) throws SQLException
FilteredRowSet
对象调用,以检查该值是否位于使用setFilter()
方法设置的setFilter()
条件(或存在多个约束的条件) setFilter()
。
FilteredRowSet
对象将在内部使用此方法,同时向FilteredRowSet
实例插入新行。
value
- 需要检查的
Object
值,是否可以作为此
FilterRowSet
对象的一部分。
column
- 一个int
对象,必须与此RowSet
对象中的列的SQL索引匹配。
这必须已经传递给Predicate
作为Predicate
列之一,而初始化Predicate
true
如果行值位于过滤器内;
false
否则
SQLException
- 如果列不是过滤条件的一部分
boolean evaluate(Object value, String columnName) throws SQLException
FilteredRowSet
对象调用,以检查该值是否在使用setFilter方法设置的过滤条件之间。
FilteredRowSet
对象将在内部使用此方法,而将新行FilteredRowSet
到FilteredRowSet
实例中。
value
- 需要检查的
Object
值,是否可以作为此
FilterRowSet
一部分。
columnName
- 一个String
对象,必须匹配此RowSet
中列的SQL名称,忽略大小写。
这必须已经传递给Predicate
作为Predicate
列之一,而初始化Predicate
true
如果值位于过滤器内;
false
否则
SQLException
- 如果列不是过滤条件的一部分