- 已知的所有子接口:
-
CachedRowSet
,FilteredRowSet
,JdbcRowSet
,JoinRowSet
,WebRowSet
1.0 背景
Joinable
接口提供了用于获取和设置匹配列的方法,这是形成SQL JOIN
的基础,通过将RowSet
对象添加到JoinRowSet
对象中形成。
任何标准的RowSet
实现可以实现Joinable
接口,以便将其添加到JoinRowSet
对象中。实现此接口使RowSet
对象能够使用Joinable
方法,这些方法设置、检索和获取有关匹配列的信息。应用程序可以将未实现Joinable
接口的RowSet
对象添加到JoinRowSet
对象中,但必须使用其中一个接受RowSet
对象和匹配列或RowSet
对象数组和匹配列数组的JoinRowSet.addRowSet
方法。
要访问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}; // 表示四个匹配列,列索引为1、2、4、7参与JOIN。 Joinable.setMatchColumn(i);可以如下添加后续匹配列到另一个实现了
Joinable
接口的RowSet
对象。
int[] w = {3, 2, 5, 3}; Joinable2.setMatchColumn(w);当应用程序将两个或多个
RowSet
对象添加到JoinRowSet
对象时,数组中的索引顺序尤为重要。数组的每个索引直接映射到先前添加的RowSet
对象的相应索引。如果发生重叠或不足,匹配列数据将在添加额外的Joinable
RowSet并需要与匹配列数据相关联时保持不变。因此,应用程序可以以任何顺序设置多个匹配列,但此顺序直接影响SQL
JOIN的结果。
当使用列名而不是列索引指示匹配列时,此断言以完全相同的方式适用。
- 自版本:
- 1.5
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionint[]
检索为此RowSet
对象使用setMatchColumn(int[] columnIdxes)
方法设置的匹配列的索引。String[]
检索为此RowSet
对象使用setMatchColumn(String [] columnNames)
方法设置的匹配列的名称。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
对象设置的指定列作为匹配列。
-
Method Details
-
setMatchColumn
为此RowSet
对象设置指定的列作为匹配列。现在,JoinRowSet
对象可以根据匹配列添加此RowSet
对象。诸如
CachedRowSet
接口之类的子接口定义了CachedRowSet.setKeyColumns
方法,允许在特定列上强制执行主键语义。实现setMatchColumn(int columnIdx)
方法的类应确保在CachedRowSet
对象将主键列设置为匹配列时,对关键列的约束得到维护。- 参数:
-
columnIdx
- 一个标识要设置为匹配列的列的索引的int
- 抛出:
-
SQLException
- 如果设置了无效的列索引 - 参见:
-
setMatchColumn
为此RowSet
对象设置指定的列作为匹配列。现在,JoinRowSet
对象可以根据匹配列添加此RowSet
对象。- 参数:
-
columnIdxes
- 一个int
数组,标识要设置为匹配列的列的索引 - 抛出:
-
SQLException
- 如果设置了无效的列索引 - 参见:
-
setMatchColumn
为此RowSet
对象设置指定的列作为匹配列。现在,JoinRowSet
对象可以根据匹配列添加此RowSet
对象。诸如
CachedRowSet
接口之类的子接口定义了CachedRowSet.setKeyColumns
方法,允许在特定列上强制执行主键语义。实现setMatchColumn(String columnIdx)
方法的类应确保在CachedRowSet
对象将主键列设置为匹配列时,对关键列的约束得到维护。- 参数:
-
columnName
- 一个String
对象,给出要设置为匹配列的列的名称 - 抛出:
-
SQLException
- 如果设置了无效的列名、列名为null或列名为空字符串 - 参见:
-
setMatchColumn
为此RowSet
对象设置指定的列作为匹配列。现在,JoinRowSet
对象可以根据匹配列添加此RowSet
对象。- 参数:
-
columnNames
- 一个String
对象数组,给出要设置为匹配列的列的名称 - 抛出:
-
SQLException
- 如果设置了无效的列名、列名为null或列名为空字符串 - 参见:
-
getMatchColumnIndexes
检索为此RowSet
对象使用setMatchColumn(int[] columnIdxes)
方法设置的匹配列的索引。- 返回值:
-
一个
int
数组,标识为此RowSet
对象设置为匹配列的索引 - 抛出:
-
SQLException
- 如果未设置匹配列 - 参见:
-
getMatchColumnNames
使用方法setMatchColumn(String [] columnNames)
为此RowSet
对象设置的匹配列的名称。- 返回值:
-
一个
String
对象数组,给出此RowSet
对象设置为匹配列的列名 - 抛出:
-
SQLException
- 如果未设置匹配列 - 参见:
-
unsetMatchColumn
取消为此RowSet
对象设置的指定列作为匹配列。实现
Joinable
接口的RowSet
对象必须确保在调用指定列上的方法CachedRowSet.unsetKeyColumns
之前继续执行类似键的约束。- 参数:
-
columnIdx
- 一个int
,标识要取消设置为匹配列的列的索引 - 抛出:
-
SQLException
- 如果指定了无效的列索引或指定列之前未设置为匹配列 - 参见:
-
unsetMatchColumn
取消为此RowSet
对象设置的指定列作为匹配列。- 参数:
-
columnIdxes
- 一个int
数组,标识要取消设置为匹配列的列的索引 - 抛出:
-
SQLException
- 如果指定了无效的列索引或指定列之前未设置为匹配列 - 参见:
-
unsetMatchColumn
取消为此RowSet
对象设置的指定列作为匹配列。实现
Joinable
接口的RowSet
对象必须确保在调用指定列上的方法CachedRowSet.unsetKeyColumns
之前继续执行类似键的约束。- 参数:
-
columnName
- 一个String
对象,给出要取消设置为匹配列的列名 - 抛出:
-
SQLException
- 如果指定了无效的列名或指定列之前未设置为匹配列 - 参见:
-
unsetMatchColumn
取消为此RowSet
对象设置的指定列作为匹配列。- 参数:
-
columnName
- 一个String
对象数组,给出要取消设置为匹配列的列名 - 抛出:
-
SQLException
- 如果指定了无效的列名或指定列之前未设置为匹配列 - 参见:
-