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

Interface Joinable

  • All Known Subinterfaces:
    CachedRowSetFilteredRowSetJdbcRowSetJoinRowSetWebRowSet

    public interface Joinable

    1.0背景

    Joinable接口提供了获取和设置匹配列的方法,这是形成通过将RowSet对象添加到JoinRowSet对象而形成的SQL JOIN的基础。

    任何标准RowSet实现可以实现Joinable接口以便添加到JoinRowSet对象。 实现此接口使RowSet对象能够使用Joinable方法,这些方法设置,检索和获取有关匹配列的信息。 一个应用程序可能会增加RowSet尚未实现的对象Joinable接口向JoinRowSet对象,但这样做它必须使用的一个JoinRowSet.addRowSet方法即采用既RowSet对象和匹配列或阵列RowSet对象和阵列匹配列。

    要访问Joinable接口中的方法, RowSet对象实现五个标准RowSet接口中的至少一个,并且还实现Joinable接口。 此外,大多数RowSet对象延伸了BaseRowSet类。 例如:

      class MyRowSetImpl extends BaseRowSet implements CachedRowSet, Joinable {
             :
             :
         } 

    2.0使用指南

    Joinable接口中的方法允许RowSet对象设置匹配列,检索匹配列或取消设置匹配列,该列是SQL JOIN可以基于的列。 可以将实现这些方法的类的实例添加到JoinRowSet对象,以允许建立SQL JOIN关系。

      CachedRowSet crs = new MyRowSetImpl();
         crs.populate((ResultSet)rs);
         (Joinable)crs.setMatchColumnIndex(1);
    
         JoinRowSet jrs = new JoinRowSetImpl();
         jrs.addRowSet(crs); 
    在前面的示例中, crsCachedRowSet对象,已实现Joinable接口。 在以下示例中, crs2没有,因此它必须将匹配列作为参数提供给addRowSet方法。 此示例假定第1列是匹配列。
      CachedRowSet crs2 = new MyRowSetImpl();
         crs2.populate((ResultSet)rs);
    
         JoinRowSet jrs2 = new JoinRowSetImpl();
         jrs2.addRowSet(crs2, 1); 

    JoinRowSet接口能够得到一个或多个数据RowSet合并为一个表对象,而无需承担创建与数据库的连接的费用。 因此,它非常适合断开连接的RowSet对象使用。 然而,任何RowSet对象都可以实现此接口,无论它是连接还是断开连接。 请注意,始终连接到其数据源的JdbcRowSet对象可以直接成为SQL JOIN一部分,而不必成为JoinRowSet对象的一部分。

    3.0管理多个匹配列

    传递到setMatchColumn方法的索引数组指示除了将用于匹配的列之外还要设置多少匹配列(数组的长度)。 例如:
      int[] i = {1, 2, 4, 7}; // indicates four match columns, with column
                                 // indexes 1, 2, 4, 7 participating in the JOIN.
         Joinable.setMatchColumn(i); 
    可以如下将后续匹配列添加到不同的Joinable对象(已实现Joinable接口的RowSet对象)。
      int[] w = {3, 2, 5, 3};
         Joinable2.setMatchColumn(w); 
    当应用程序将两个或多个RowSet对象添加到JoinRowSet对象时,数组中索引的顺序尤为重要。 数组的每个索引直接映射到先前添加的RowSet对象的相应索引。 如果发生重叠或欠重叠,则在添加额外的Joinable RowSet并且需要与匹配列数据相关的情况下维护匹配列数据。 因此,应用程序可以按任何顺序设置多个匹配列,但此顺序对SQL JOIN的结果有直接影响。

    当使用列名而不是列索引来指示匹配列时,此断言以完全相同的方式应用。

    从以下版本开始:
    1.5
    另请参见:
    JoinRowSet
    • 方法摘要

      所有方法  实例方法 抽象方法 
      变量和类型 方法 描述
      int[] getMatchColumnIndexes()
      使用方法 setMatchColumn(int[] columnIdxes)检索为此 RowSet对象设置的匹配列的索引。
      String[] getMatchColumnNames()
      使用方法 setMatchColumn(String [] columnNames)检索为此 RowSet对象设置的匹配列的名称。
      void setMatchColumn​(int columnIdx)
      将指定列设置为此 RowSet对象的匹配列。
      void setMatchColumn​(int[] columnIdxes)
      将指定列设置为此 RowSet对象的匹配列。
      void setMatchColumn​(String columnName)
      将指定列设置为此 RowSet对象的匹配列。
      void setMatchColumn​(String[] columnNames)
      将指定列设置为此 RowSet对象的匹配列。
      void unsetMatchColumn​(int columnIdx)
      取消将指定列设置为此 RowSet对象的匹配列。
      void unsetMatchColumn​(int[] columnIdxes)
      将指定列取消设置为此 RowSet对象的匹配列。
      void unsetMatchColumn​(String columnName)
      取消将指定列设置为此 RowSet对象的匹配列。
      void unsetMatchColumn​(String[] columnName)
      取消将指定列设置为此 RowSet对象的匹配列。
    • 方法详细信息

      • setMatchColumn

        void setMatchColumn​(int columnIdx)
                     throws SQLException
        将指定列设置为此RowSet对象的匹配列。 JoinRowSet对象现在可以根据匹配列添加此RowSet对象。

        子接口(如CachedRowSet接口定义方法CachedRowSet.setKeyColumns ,该方法允许在特定列上强制执行主键语义。 CachedRowSet对象将主键列设置为匹配列时, setMatchColumn(int columnIdx)方法的实现应确保维护对键列的约束。

        参数
        columnIdx - 标识要设置为匹配列的列的索引的 int
        异常
        SQLException - 如果设置了无效的列索引
        另请参见:
        setMatchColumn(int[])unsetMatchColumn(int)
      • setMatchColumn

        void setMatchColumn​(int[] columnIdxes)
                     throws SQLException
        将指定列设置为此RowSet对象的匹配列。 JoinRowSet对象现在可以根据匹配列添加此RowSet对象。
        参数
        columnIdxes - 一个 columnIdxes的数组, int标识要设置为匹配列的列的索引
        异常
        SQLException - 如果设置了无效的列索引
        另请参见:
        setMatchColumn(int[])unsetMatchColumn(int[])
      • setMatchColumn

        void setMatchColumn​(String columnName)
                     throws SQLException
        将指定列设置为此RowSet对象的匹配列。 JoinRowSet对象现在可以根据匹配列添加此RowSet对象。

        诸如CachedRowSet接口的子接口定义方法CachedRowSet.setKeyColumns ,其允许在特定列上实施主键语义。 CachedRowSet对象将主键列设置为匹配列时, setMatchColumn(String columnIdx)方法的实现应确保维护对键列的约束。

        参数
        columnName - 一个 String对象,给出要设置为匹配列的列的名称
        异常
        SQLException - 如果设置了无效的列名,则列名为空,或列名为空字符串
        另请参见:
        unsetMatchColumn(int)setMatchColumn(int[])
      • setMatchColumn

        void setMatchColumn​(String[] columnNames)
                     throws SQLException
        将指定列设置为此RowSet对象的匹配列。 现在, JoinRowSet对象可以根据匹配列添加此RowSet对象。
        参数
        columnNames - 一个 String对象的数组,给出要设置为匹配列的列的名称
        异常
        SQLException - 如果设置了无效的列名,则列名为空,或列名为空字符串
        另请参见:
        unsetMatchColumn(int)setMatchColumn(int[])
      • getMatchColumnIndexes

        int[] getMatchColumnIndexes()
                             throws SQLException
        使用方法 setMatchColumn(int[] columnIdxes)检索为此 RowSet对象设置的匹配列的索引。
        结果
        一个 int数组,用于标识为此 RowSet对象设置为匹配列的列的 RowSet
        异常
        SQLException - 如果未设置匹配列
        另请参见:
        setMatchColumn(int)unsetMatchColumn(int)
      • getMatchColumnNames

        String[] getMatchColumnNames()
                              throws SQLException
        使用方法 setMatchColumn(String [] columnNames)检索为此 RowSet对象设置的匹配列的名称。
        结果
        一个 String对象的数组,给出设置为此 RowSet对象的匹配列的列的名称
        异常
        SQLException - 如果未设置匹配列
        另请参见:
        setMatchColumn(int)unsetMatchColumn(int)
      • unsetMatchColumn

        void unsetMatchColumn​(int columnIdx)
                       throws SQLException
        将指定列取消设置为此RowSet对象的匹配列。

        实现Joinable接口的RowSet对象必须确保继续强制执行类似键的约束,直到在指定列上调用方法CachedRowSet.unsetKeyColumns为止。

        参数
        columnIdx - 一个 int ,用于标识要作为匹配列取消设置的列的索引
        异常
        SQLException - 如果指定了无效的列索引,或者之前未将指定的列设置为匹配列
        另请参见:
        setMatchColumn(int)
      • unsetMatchColumn

        void unsetMatchColumn​(int[] columnIdxes)
                       throws SQLException
        取消将指定列设置为此 RowSet对象的匹配列。
        参数
        columnIdxes -的阵列 int ,它标识被取消设置为匹配列的列的索引
        异常
        SQLException - 如果指定了无效的列索引,或者之前未将指定的列设置为匹配列
        另请参见:
        setMatchColumn(int)
      • unsetMatchColumn

        void unsetMatchColumn​(String columnName)
                       throws SQLException
        取消将指定列设置为此RowSet对象的匹配列。

        实现Joinable接口的RowSet对象必须确保继续强制执行类似键的约束,直到在指定列上调用方法CachedRowSet.unsetKeyColumns为止。

        参数
        columnName - 一个 String对象,给出要作为匹配列取消设置的列的名称
        异常
        SQLException - 如果指定了无效的列名,或者之前未将指定的列设置为匹配列
        另请参见:
        setMatchColumn(int)
      • unsetMatchColumn

        void unsetMatchColumn​(String[] columnName)
                       throws SQLException
        取消将指定列设置为此 RowSet对象的匹配列。
        参数
        columnName - 一个 String对象的数组,给出要作为匹配列取消设置的列的名称
        异常
        SQLException - 如果指定了无效的列名,或者之前未将指定的列设置为匹配列
        另请参见:
        setMatchColumn(int)