public interface Joinable
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 {
:
:
}
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是一个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
对象可以直接成为SQL JOIN
一部分,而不必成为JoinRowSet
对象的一部分。
setMatchColumn
方法的索引数组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
对象( RowSet
已经实现对象Joinable
接口)。
int[] w = {3, 2, 5, 3};
Joinable2.setMatchColumn(w);
当一个应用程序将一个或多个RowSet
对象添加到一个JoinRowSet
对象时,数组中索引的顺序尤为重要。
数组的每个索引直接映射到先前添加的RowSet
对象的相应索引。
如果发生重叠或下划线,则在添加附加的Joinable
RowSet并需要与匹配列数据相关联的情况下维护匹配列数据。
因此,应用程序可以按任何顺序设置多个匹配列,但此顺序对SQL
JOIN的结果有直接影响。
当使用列名称而不是列索引来指示匹配列时,此断言以完全相同的方式适用。
JoinRowSet
Modifier and Type | Method and Description |
---|---|
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 对象的匹配列。
|
void setMatchColumn(int columnIdx) throws SQLException
RowSet
对象的匹配列。
一个JoinRowSet
对象现在可以根据匹配列添加此RowSet
对象。
诸如CachedRowSet
子接口定义方法CachedRowSet.setKeyColumns
,其允许在特定列上强制执行主键语义。 所述的实施方式中setMatchColumn(int columnIdx)
方法应确保当上键列的约束被维持CachedRowSet
对象设置一个主键列为匹配列。
columnIdx
- 一个
int
标识要设置为匹配列的列的索引
SQLException
- 如果设置无效的列索引
setMatchColumn(int[])
,
unsetMatchColumn(int)
void setMatchColumn(int[] columnIdxes) throws SQLException
RowSet
对象的匹配列。
一个JoinRowSet
对象现在可以根据匹配列添加此RowSet
对象。
columnIdxes
- 标识要设置为匹配列的列的索引的数组
int
SQLException
- 如果设置了无效的列索引
setMatchColumn(int[])
,
unsetMatchColumn(int[])
void setMatchColumn(String columnName) throws SQLException
RowSet
对象的匹配列。
一个JoinRowSet
对象现在可以根据匹配列添加此RowSet
对象。
诸如CachedRowSet
接口的CachedRowSet
接口定义了方法CachedRowSet.setKeyColumns
,它允许在特定列上强制执行主键语义。 当CachedRowSet
对象将主键列设置为匹配列时, setMatchColumn(String columnIdx)
方法的实现应确保维护关键列的约束。
columnName
- 一个
String
对象,给出要设置为匹配列的列的名称
SQLException
- 如果设置了无效的列名称,则列名称为空,或列名称为空字符串
unsetMatchColumn(int)
,
setMatchColumn(int[])
void setMatchColumn(String[] columnNames) throws SQLException
RowSet
对象的匹配列。
一个JoinRowSet
对象现在可以根据匹配列添加此RowSet
对象。
columnNames
- 一个
String
对象的数组,给出要设置为匹配列的列的名称
SQLException
- 如果列名无效,列名称为空,或列名为空字符串
unsetMatchColumn(int)
,
setMatchColumn(int[])
int[] getMatchColumnIndexes() throws SQLException
setMatchColumn(int[] columnIdxes)
为此
RowSet
对象设置的匹配列的索引。
int
数组,用于标识被设置为该
RowSet
对象的匹配列的列的
RowSet
SQLException
- 如果没有设置匹配列
setMatchColumn(int)
,
unsetMatchColumn(int)
String[] getMatchColumnNames() throws SQLException
setMatchColumn(String [] columnNames)
为此
RowSet
对象设置的匹配列的名称。
String
对象,给出列为这个
RowSet
对象的匹配列的列的名称
SQLException
- 如果没有设置匹配列
setMatchColumn(int)
,
unsetMatchColumn(int)
void unsetMatchColumn(int columnIdx) throws SQLException
RowSet
对象的匹配列。
RowSet
实现对象Joinable
接口必须确保钥匙状的约束继续执行直到方法CachedRowSet.unsetKeyColumns
被称为在指定的列。
columnIdx
-
int
要作为匹配列取消设置的列的索引的int
SQLException
- 如果指定了无效的列索引,或者指定的列未被预先设置为匹配列
setMatchColumn(int)
void unsetMatchColumn(int[] columnIdxes) throws SQLException
RowSet
对象的匹配列。
columnIdxes
- 一个
columnIdxes
的数组,
int
要作为匹配列取消设置的列的索引
SQLException
- 如果指定了无效的列索引,或者指定的列未被预先设置为匹配列
setMatchColumn(int)
void unsetMatchColumn(String columnName) throws SQLException
RowSet
对象的匹配列。
RowSet
实现对象Joinable
接口必须确保钥匙状的约束继续执行直到方法CachedRowSet.unsetKeyColumns
被称为在指定的列。
columnName
- 一个
String
对象,给出要作为匹配列取消设置的列的名称
SQLException
- 如果指定了无效的列名称,或者指定的列未被预先设置为匹配列
setMatchColumn(int)
void unsetMatchColumn(String[] columnName) throws SQLException
RowSet
对象的匹配列。
columnName
- 一个
String
对象的数组,给出要作为匹配列取消设置的列的名称
SQLException
- 如果指定了无效的列名称,或者指定的列未被预先设置为匹配列
setMatchColumn(int)