- 所有已知的子接口:
CachedRowSet,FilteredRowSet,JdbcRowSet,JoinRowSet,WebRowSet
1.0 背景
Joinable接口提供了获取和设置匹配列的方法,这是形成由RowSet对象添加到JoinRowSet对象的SQLJOIN的基础。
任何标准 RowSet 实现可能实现 Joinable 接口以便添加到 JoinRowSet 对象。实现此接口使 RowSet 对象能够使用 Joinable 方法,这些方法设置、检索和获取有关匹配列的信息。应用程序可以将尚未实现 Joinable 接口的 RowSet 对象添加到 JoinRowSet 对象,但要这样做,它必须使用 JoinRowSet.addRowSet 方法之一,该方法同时采用 RowSet 对象和匹配列或 RowSet 对象数组和数组匹配列。
为了访问 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}; // 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 并且需要与匹配列数据相关联时保留匹配列数据。因此,应用程序可以以任意顺序设置多个匹配列,但该顺序对SQLJOIN 的结果有直接影响。
当使用列名而不是列索引来指示匹配列时,此断言以完全相同的方式应用。
- 自从:
- 1.5
- 参见:
-
方法总结
修饰符和类型方法描述int[]使用方法setMatchColumn(int[] columnIdxes)检索为此RowSet对象设置的匹配列的索引。String[]使用方法setMatchColumn(String [] columnNames)检索为此RowSet对象设置的匹配列的名称。voidsetMatchColumn(int columnIdx) 将指定列设置为此RowSet对象的匹配列。voidsetMatchColumn(int[] columnIdxes) 将指定列设置为此RowSet对象的匹配列。voidsetMatchColumn(String columnName) 将指定列设置为此RowSet对象的匹配列。voidsetMatchColumn(String[] columnNames) 将指定列设置为此RowSet对象的匹配列。voidunsetMatchColumn(int columnIdx) 取消将指定列设置为此RowSet对象的匹配列。voidunsetMatchColumn(int[] columnIdxes) 取消将指定列设置为此RowSet对象的匹配列。voidunsetMatchColumn(String columnName) 取消将指定列设置为此RowSet对象的匹配列。voidunsetMatchColumn(String[] columnName) 取消将指定列设置为此RowSet对象的匹配列。
-
方法详情
-
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- 如果设置了无效的列名,则列名为空,或者列名为空字符串- 参见:
-
setMatchColumn
将指定列设置为此RowSet对象的匹配列。JoinRowSet对象现在可以根据匹配列添加此RowSet对象。- 参数:
columnNames- 一个String对象数组,给出要设置为匹配列的列的名称- 抛出:
SQLException- 如果设置了无效的列名,则列名为空,或者列名为空字符串- 参见:
-
getMatchColumnIndexes
使用方法setMatchColumn(int[] columnIdxes)检索为此RowSet对象设置的匹配列的索引。- 返回:
-
一个
int数组,标识被设置为此RowSet对象的匹配列的列的索引 - 抛出:
SQLException- 如果没有设置匹配列- 参见:
-
getMatchColumnNames
使用方法setMatchColumn(String [] columnNames)检索为此RowSet对象设置的匹配列的名称。- 返回:
-
一个
String对象数组,给出列的名称设置为该RowSet对象的匹配列 - 抛出:
SQLException- 如果没有设置匹配列- 参见:
-
unsetMatchColumn
取消将指定列设置为此RowSet对象的匹配列。RowSet实现Joinable接口的对象必须确保在指定列上调用方法CachedRowSet.unsetKeyColumns之前继续强制执行类似键的约束。- 参数:
columnIdx- 一个int标识要取消设置为匹配列的列的索引- 抛出:
SQLException- 如果指定了无效的列索引,或者指定的列之前未设置为匹配列- 参见:
-
unsetMatchColumn
取消将指定列设置为此RowSet对象的匹配列。- 参数:
columnIdxes-int的数组,标识要取消设置为匹配列的列的索引- 抛出:
SQLException- 如果指定了无效的列索引,或者指定的列之前未设置为匹配列- 参见:
-
unsetMatchColumn
取消将指定列设置为此RowSet对象的匹配列。RowSet实现Joinable接口的对象必须确保在指定列上调用方法CachedRowSet.unsetKeyColumns之前继续强制执行类似键的约束。- 参数:
columnName- 一个String对象,给出要取消设置为匹配列的列的名称- 抛出:
SQLException- 如果指定了无效的列名或指定的列之前未设置为匹配列- 参见:
-
unsetMatchColumn
取消将指定列设置为此RowSet对象的匹配列。- 参数:
columnName- 一个String对象数组,给出要取消设置为匹配列的列的名称- 抛出:
SQLException- 如果指定了无效的列名或指定的列之前未设置为匹配列- 参见:
-