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)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.