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

Interface FilteredRowSet

  • All Superinterfaces:
    AutoCloseableCachedRowSetJoinableResultSetRowSetWebRowSetWrapper

    public interface FilteredRowSetextends WebRowSet
    FilteredRowSet所有标准实现必须实现的标准接口。 FilteredRowSetImpl类提供了参考实现,如果需要可以扩展。 或者,供应商可以通过实现此接口自由实现其自己的版本。

    1.0背景

    有时, RowSet对象需要对其内容提供一定程度的过滤。 一种可能的解决方案是为所有标准RowSet实现提供查询语言; 但是,对于轻量级组件,例如断开连接的RowSet对象,这是一种不切实际的方法。 FilteredRowSet接口旨在满足此需求,而无需提供重量级查询语言以及此类查询语言所需的处理。

    JDBC FilteredRowSet标准实现实现了RowSet接口并扩展了CachedRowSet ¢类。 CachedRowSet类提供了一组受保护的游标操作方法, FilteredRowSet实现可以覆盖这些方法以提供过滤支持。

    2.0谓词共享

    如果在父接口中使用继承的createShared方法共享FilteredRowSet实现,则应共享Predicate而不进行所有FilteredRowSet实例克隆的修改。

    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  
    在上面的示例中,我们初始化了一个实现Predicate接口的Range对象。 此对象表示以下约束:从此FilteredRowSet对象输出或修改的所有行必须位于“columnName”列中的值“Alpha”和“Bravo”两个值之间。 如果过滤器应用于不包含在过滤器范围内的数据的FilteredRowSet对象,则不返回任何行。

    该框架允许实现谓词的多个类组合使用以实现所需的过滤结果,而不需要查询语言处理。

    4.0更新FilteredRowSet对象

    一个上设置的谓词FilteredRowSet对象适用于在所有行的标准RowSet对象的管理行的一个子集RowSet对象。 此标准管理可见行的子集,还定义可以修改,删除或插入哪些行。

    因此,必须将FilteredRowSet对象上设置的谓词视为双向,并将设置标准视为所有视图和更新FilteredRowSet对象的选通机制。 任何更新违反标准的FilteredRowSet尝试都将导致抛出SQLException对象。

    可以通过随时将新的Predicate对象应用于FilteredRowSet实例来修改FilteredRowSet范围标准。 如果未检测到对FilteredRowSet对象的其他引用,则可以执行此操作。 新过滤器会立即影响FilteredRowSet对象中的标准强制执行,并且所有后续视图和更新都将受到类似的强制执行。

    5.0过滤器外部行的行为

    在删除过滤器或应用新过滤器之前,无法修改FilteredRowSet对象上的过滤器集之外的行。

    此外,只有属于过滤器范围的行才会与数据源同步。

    从以下版本开始:
    1.5
    • 方法详细信息

      • setFilter

        void setFilter​(Predicate p)        throws SQLException
        将给定的Predicate对象应用于此FilteredRowSet对象。 过滤器将控制应用于入站和出站视图,约束哪些行可见以及哪些行可以操作。

        可以随时设置新的Predicate对象。 这具有更改RowSet对象数据的约束的效果。 此外,在运行时修改所述滤波器呈现由此多个组件可以在一个进行操作的问题FilteredRowSet对象。 应用程序开发人员必须负责在FilteredRowSet Predicate对象更改时管理FilteredRowSet对象的多个句柄。

        参数
        p -一个Predicate对象限定过滤器用于此FilteredRowSet对象。 设置值将清除谓词,允许所有行变为可见。
        异常
        SQLException - 如果在设置 Predicate对象时发生错误
      • getFilter

        Predicate getFilter()
        检索此 FilteredRowSet对象的活动过滤器。
        结果
        p中PredicateFilteredRowSet对象; null如果未设置过滤器。