-
public interface Predicate
标准接口,为所有FilteredRowSet
对象提供框架以描述其过滤器。1.0背景
Predicate
接口是应用程序可以实现的标准接口,用于定义要应用于FilteredRowSet
对象的过滤器。FilteredRowSet
对象使用此接口的实现并强制执行方法evaluate
的实现中定义的约束。FilteredRowSet
对象以双向方式强制执行过滤器约束:它仅输出在过滤器约束内的行; 相反,它只插入,修改或更新过滤器约束范围内的行。2.0实施指南
为了提供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实现应用程序。- 从以下版本开始:
- 1.5
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 boolean
evaluate(Object value, int column)
该方法由FilteredRowSet
对象调用,以检查该值是否位于使用setFilter()
方法设置的过滤标准(或存在多个约束的条件)setFilter()
。boolean
evaluate(Object value, String columnName)
FilteredRowSet
对象调用此方法以检查该值是否位于使用setFilter方法设置的过滤条件之间。boolean
evaluate(RowSet rs)
此方法通常称为FilteredRowSet
对象内部方法(非公共),用于控制RowSet
对象的光标从行移动到下一行。
-
-
-
方法详细信息
-
evaluate
boolean evaluate(RowSet rs)
此方法通常称为FilteredRowSet
对象内部方法(非公共),用于控制RowSet
对象的光标从行移动到下一个。 此外,如果此内部方法将光标移动到已删除的行上,则内部方法将继续保持光标,直到找到有效行。- 参数
-
rs
- 要评估的RowSet
- 结果
-
true
如果过滤器中有更多行;false
否则
-
evaluate
boolean evaluate(Object value, int column) throws SQLException
FilteredRowSet
对象调用此方法以检查值是否位于使用setFilter()
方法设置的过滤条件(或存在多个约束的条件)setFilter()
。FilteredRowSet
对象将在内部使用此方法,同时将新行插入FilteredRowSet
实例。- 参数
-
value
-一个Object
值需要被检查,它是否可以为一部分FilterRowSet
对象。 -
column
- 一个int
对象,该对象必须与此RowSet
对象中列的SQL索引匹配。 这必须在初始化Predicate
作为过滤列之一传递给Predicate
- 结果
-
true
如果行值位于过滤器内; 否则为false
- 异常
-
SQLException
- 如果列不是过滤条件的一部分
-
evaluate
boolean evaluate(Object value, String columnName) throws SQLException
FilteredRowSet
对象调用此方法以检查该值是否位于使用setFilter方法设置的过滤条件之间。FilteredRowSet
对象将在内部使用此方法,同时将新行插入到FilteredRowSet
实例。- 参数
-
value
- 一个Object
值,需要检查,是否可以成为此FilterRowSet
一部分。 -
columnName
- 一个String
对象,必须与此RowSet
列的SQL名称匹配,忽略大小写。 这必须已传递到Predicate
作为初始化Predicate
进行过滤的列Predicate
- 结果
-
true
如果值位于过滤器内; 否则为false
- 异常
-
SQLException
- 如果列不是过滤条件的一部分
-
-