-
- All Known Subinterfaces:
-
CachedRowSet
,FilteredRowSet
,JdbcRowSet
,JoinRowSet
,WebRowSet
public interface Joinable
1.0背景
Joinable
接口提供了获取和设置匹配列的方法,这是形成通过将RowSet
对象添加到JoinRowSet
对象而形成的SQLJOIN
的基础。任何标准
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
对象设置匹配列,检索匹配列或取消设置匹配列,该列是SQLJOIN
可以基于的列。 可以将实现这些方法的类的实例添加到JoinRowSet
对象,以允许建立SQLJOIN
关系。CachedRowSet crs = new MyRowSetImpl(); crs.populate((ResultSet)rs); (Joinable)crs.setMatchColumnIndex(1); JoinRowSet jrs = new JoinRowSetImpl(); jrs.addRowSet(crs);
在前面的示例中, crs是CachedRowSet
对象,已实现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
对象可以直接成为SQLJOIN
一部分,而不必成为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)
-
-