模块  java.sql.rowset
软件包  javax.sql.rowset

Interface Predicate


  • 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 - 如果列不是过滤条件的一部分