-
- All Known Subinterfaces:
-
CachedRowSet
,FilteredRowSet
,JdbcRowSet
,JoinRowSet
,WebRowSet
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
对象设置匹配列,检索匹配列或取消设置匹配列,该列是可以基于SQLJOIN
的列。 可以将实现这些方法的类的实例添加到JoinRowSet
对象中,以允许建立SQLJOIN
关系。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
对象可以直接成为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
-
-
方法摘要
所有方法 接口方法 抽象方法 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)
-
-