Module  java.sql.rowset
软件包  javax.sql.rowset

Interface Joinable

  • All Known Subinterfaces:
    CachedRowSetFilteredRowSetJdbcRowSetJoinRowSetWebRowSet


    public interface Joinable

    1.0背景

    所述Joinable接口提供用于获取和设置匹配列,其为用于形成SQL的基础方法JOIN通过加入形成RowSet对象到JoinRowSet对象。

    任何标准的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); 
    在前面的例子中, crs是一个已经实现了Joinable接口的CachedRowSet对象。 在下面的示例中, 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
    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      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为该 RowSet对象的匹配列。
      void unsetMatchColumn​(int[] columnIdxes)
      将指定的列 RowSet为此 RowSet对象的匹配列。
      void unsetMatchColumn​(String columnName)
      将指定的列 RowSet为此 RowSet对象的匹配列。
      void unsetMatchColumn​(String[] columnName)
      将指定的列 RowSet为此 RowSet对象的匹配列。
    • 方法详细信息

      • setMatchColumn

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

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

        参数
        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 ,它允许在特定列上强制执行主键语义。 setMatchColumn(String columnIdx)方法的实现应确保当一个CachedRowSet对象将主键列设置为匹配列时,将保留对关键列的约束。

        参数
        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为此RowSet对象的匹配列。

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

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

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

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

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

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

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