public interface JoinRowSet extends WebRowSet
JoinRowSet
接口提供了将不同RowSet
对象的相关数据RowSet
到一个JoinRowSet
对象中的机制,该对象表示SQL JOIN
。
换句话说, JoinRowSet
对象充当来自RowSet
对象的RowSet
,形成一个SQL JOIN
关系。
Joinable
接口提供了设置,检索和取消设置匹配列的方法,建立SQL JOIN
关系的基础。 可以通过将匹配列提供给JointRowSet
方法addRowSet
的适当版本来设置匹配列。
RowSet
对象( CachedRowSet
对象和扩展的实现CachedRowSet
接口)没有标准的方法来建立一个SQL JOIN
之间RowSet
对象,而不重新连接到数据源的昂贵的操作。
JoinRowSet
接口专门用于满足这一需求。
任何RowSet
对象都可以添加到JoinRowSet
对象中,成为SQL JOIN
关系的一部分。 这意味着连接和断开的RowSet
对象可以是JOIN
一部分。 RowSet
在连接环境中(操作对象JdbcRowSet
对象)鼓励使用数据库它们已经连接到SQL建立JOIN
直接表之间的关系。 但是,如果需要,可以将JdbcRowSet
对象添加到JoinRowSet
对象。
任何数量的RowSet
对象都可以添加到JoinRowSet
的实例中,前提是它们可以在SQL JOIN
相关。 根据定义,SQL JOIN
语句用于根据公共属性组合包含在两个或多个关系数据库表中的数据。 Joinable
接口提供了建立公共属性的方法,通过设置匹配列来完成。 匹配列通常与主键一致,但不要求匹配列与主键相同。 通过建立和实施再列匹配,一个JoinRowSet
对象建立JOIN
之间的关系RowSet
没有可用的关系数据库的援助对象。
的类型的JOIN
要建立是通过将所确定JoinRowSet
使用该方法的常量setJoinType
。 可以设置以下SQL JOIN
类型:
CROSS_JOIN
FULL_JOIN
INNER_JOIN
- 如果没有设置JOIN
类型的默认值 LEFT_OUTER_JOIN
RIGHT_OUTER_JOIN
JOIN
将自动成为内部连接。
对JoinRowSet
界面中的字段的JoinRowSet
解释了这些JOIN
类型,这是标准的SQL JOIN
类型。
JoinRowSet
对象创建JOIN
JoinRowSet
对象时,它为空。
要添加的第一个RowSet
对象成为JOIN
关系的基础。
应用程序必须确定要添加到JoinRowSet
对象的每个RowSet
对象中的哪个列应该是匹配列。
所有RowSet
对象必须包含匹配列,每个匹配列中的值必须是可与其他匹配列中的值进行比较的值。
列不必具有相同的名称,尽管它们经常做到,并且只要可以比较数据类型,它们就不必存储完全相同的数据类型。
匹配列可以通过两种方式设置:
Joinable
方法setMatchColumn
RowSet
对象添加到JoinRowSet
对象之前可以设置匹配列的唯一方法。 RowSet
对象必须实现Joinable
接口才能使用方法setMatchColumn
。 一旦设置了匹配列值,该方法就可以随时重置匹配列。 JoinRowSet
方法addRowSet
一个版本,该方法采用列名或数字(或列名或数字数组) addRowSet
方法中的四个将匹配列作为参数。 这四种方法设置或在时间复位的匹配列RowSet
对象被添加到一个JoinRowSet
对象。 以下代码段将两个CachedRowSet
对象添加到JoinRowSet
对象。 请注意,在此示例中,没有设置SQL JOIN
类型,因此默认的JOIN
类型(即INNER_JOIN )已建立。
在以下代码片段中,将匹配列设置为第一列( EMP_ID
)的表EMPLOYEES
添加到JoinRowSet
对象jrs 。 然后添加表ESSP_BONUS_PLAN
,其匹配列同样为EMP_ID
列。 当该第二表被添加到JRS,只有在排ESSP_BONUS_PLAN
其EMP_ID
值相匹配的EMP_ID
在值EMPLOYEES
加入表中。 在这种情况下,奖金计划中的每个人都是员工,所以表ESSP_BONUS_PLAN
中的所有行都添加到JoinRowSet
对象中。 在此示例中,正在添加的CachedRowSet
对象已实现Joinable
接口,因此可以调用Joinable
方法setMatchColumn
。
JoinRowSet jrs = new JoinRowSetImpl();
ResultSet rs1 = stmt.executeQuery("SELECT * FROM EMPLOYEES");
CachedRowSet empl = new CachedRowSetImpl();
empl.populate(rs1);
empl.setMatchColumn(1);
jrs.addRowSet(empl);
ResultSet rs2 = stmt.executeQuery("SELECT * FROM ESSP_BONUS_PLAN");
CachedRowSet bonus = new CachedRowSetImpl();
bonus.populate(rs2);
bonus.setMatchColumn(1); // EMP_ID is the first column
jrs.addRowSet(bonus);
在这一点上, jrs是基于他们的EMP_ID
列的两个RowSet
对象的内部JOIN。 该应用程序现在可以浏览组合的数据,就像浏览一个单一的RowSet
对象一样。 因为jrs本身是一个RowSet
对象,应用程序可以使用RowSet
方法导航或修改它。
jrs.first();
int employeeID = jrs.getInt(1);
String employeeName = jrs.getString(2);
请注意,由于SQL JOIN
当应用程序增加了第二个或后续必须执行RowSet
对象而,有可能是在性能初始降解JOIN
正在执行的。
以下代码片段添加了一个附加的CachedRowSet
对象。 在这种情况下,当CachedRowSet
对象被添加到JoinRowSet
对象时,匹配列( EMP_ID
)被设置。
ResultSet rs3 = stmt.executeQuery("SELECT * FROM 401K_CONTRIB");
CachedRowSet fourO1k = new CachedRowSetImpl();
four01k.populate(rs3);
jrs.addRowSet(four01k, 1);
JoinRowSet
对象jrs现在包含来自所有三个表的值。 其中用于所述值在four01k每一行中的数据EMP_ID
柱为相匹配的值EMP_ID
在JRS列已被添加到JRS。
JoinRowSet
方法 JoinRowSet
接口提供了几种添加RowSet
对象的方法,并提供有关JoinRowSet
对象的信息。
RowSet
对象的方法 RowSet
对象,或者一次添加多个RowSet
对象。 在这两种情况下,方法可以为要添加的每个RowSet
对象指定匹配列。 RowSet
对象中的JoinRowSet
对象,另一种方法检索RowSet
名称。 第三种方法检索幕后使用的SQL WHERE
子句以形成JOIN
或WHERE
子句的文本描述。 JOIN
类型有关 JOIN
类型,五种方法查找JoinRowSet
对象是否支持给定类型。 JoinRowSet
对象的单独副本的方法 Modifier and Type | Field and Description |
---|---|
static int |
CROSS_JOIN
ANSI样式
JOIN 提供两个表的十字积
|
static int |
FULL_JOIN
一个ANSI风格的
JOIN 提供了一个完整的JOIN。
|
static int |
INNER_JOIN
ANSI样式的
JOIN 提供两个表之间的内部连接。
|
static int |
LEFT_OUTER_JOIN
ANSI样式
JOIN 提供两个表之间的左外连接。
|
static int |
RIGHT_OUTER_JOIN
ANSI样式
JOIN 提供两个表之间的右外连接。
|
PUBLIC_XML_SCHEMA, SCHEMA_SYSTEM_ID
COMMIT_ON_ACCEPT_CHANGES
CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE
Modifier and Type | Method and Description |
---|---|
void |
addRowSet(Joinable rowset)
将给定的
RowSet 对象添加到此
JoinRowSet 对象。
|
void |
addRowSet(RowSet[] rowset, int[] columnIdx)
将
RowSet 对象的给定数组中
RowSet 一个或多个
RowSet 对象添加到此
JoinRowSet 对象中,并将每个
RowSet 对象的匹配列设置为给定列索引数组中的匹配列。
|
void |
addRowSet(RowSet[] rowset, String[] columnName)
将
RowSet 对象的给定数组中
RowSet 一个或多个
RowSet 对象添加到此
JoinRowSet 对象中,并将每个
RowSet 对象的匹配列设置为给定列名称数组中的匹配列。
|
void |
addRowSet(RowSet rowset, int columnIdx)
将给定的
RowSet 对象添加到此
JoinRowSet 对象中,并将指定的列设置为
RowSet 对象的匹配列。
|
void |
addRowSet(RowSet rowset, String columnName)
将
rowset添加到此
JoinRowSet 对象,并将指定的列设置为匹配列。
|
int |
getJoinType()
返回
int 管理此JoinRowSet实例的集合SQL
JOIN int。
|
String[] |
getRowSetNames()
返回一个
String 数组,其中
RowSet 添加到此
JoinRowSet 对象的
RowSet 对象的名称。
|
Collection<?> |
getRowSets()
返回一个
Collection 包含对象
RowSet 已经添加到该物体
JoinRowSet 对象。
|
String |
getWhereClause()
返回在JoinRowSet对象中使用的WHERE子句的类似SQL的描述。
|
void |
setJoinType(int joinType)
允许应用程序调整对JoinRowSet对象实例中包含的表所强制的类型
JOIN 。
|
boolean |
supportsCrossJoin()
指示CROSS_JOIN是否由JoinRowSet实现支持
|
boolean |
supportsFullJoin()
指示JoinRowSet实现是否支持FULL_JOIN
|
boolean |
supportsInnerJoin()
指示JoinRowSet实现是否支持INNER_JOIN
|
boolean |
supportsLeftOuterJoin()
指示JoinRowSet实现是否支持LEFT_OUTER_JOIN
|
boolean |
supportsRightOuterJoin()
指示JoinRowSet实现是否支持RIGHT_OUTER_JOIN
|
CachedRowSet |
toCachedRowSet()
创建一个新的
CachedRowSet 对象,其中包含该
JoinRowSet 对象中的数据,可以使用
SyncProvider 对象的
CachedRowSet 对象将其保存到数据源。
|
readXml, readXml, writeXml, writeXml, writeXml, writeXml
acceptChanges, acceptChanges, columnUpdated, columnUpdated, commit, createCopy, createCopyNoConstraints, createCopySchema, createShared, execute, getKeyColumns, getOriginal, getOriginalRow, getPageSize, getRowSetWarnings, getShowDeleted, getSyncProvider, getTableName, nextPage, populate, populate, previousPage, release, restoreOriginal, rollback, rollback, rowSetPopulated, setKeyColumns, setMetaData, setOriginalRow, setPageSize, setShowDeleted, setSyncProvider, setTableName, size, toCollection, toCollection, toCollection, undoDelete, undoInsert, undoUpdate
addRowSetListener, clearParameters, execute, getCommand, getDataSourceName, getEscapeProcessing, getMaxFieldSize, getMaxRows, getPassword, getQueryTimeout, getTransactionIsolation, getTypeMap, getUrl, getUsername, isReadOnly, removeRowSetListener, setArray, setAsciiStream, setAsciiStream, setAsciiStream, setAsciiStream, setBigDecimal, setBigDecimal, setBinaryStream, setBinaryStream, setBinaryStream, setBinaryStream, setBlob, setBlob, setBlob, setBlob, setBlob, setBlob, setBoolean, setBoolean, setByte, setByte, setBytes, setBytes, setCharacterStream, setCharacterStream, setCharacterStream, setCharacterStream, setClob, setClob, setClob, setClob, setClob, setClob, setCommand, setConcurrency, setDataSourceName, setDate, setDate, setDate, setDate, setDouble, setDouble, setEscapeProcessing, setFloat, setFloat, setInt, setInt, setLong, setLong, setMaxFieldSize, setMaxRows, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNClob, setNClob, setNClob, setNClob, setNClob, setNClob, setNString, setNString, setNull, setNull, setNull, setNull, setObject, setObject, setObject, setObject, setObject, setObject, setPassword, setQueryTimeout, setReadOnly, setRef, setRowId, setRowId, setShort, setShort, setSQLXML, setSQLXML, setString, setString, setTime, setTime, setTime, setTime, setTimestamp, setTimestamp, setTimestamp, setTimestamp, setTransactionIsolation, setType, setTypeMap, setURL, setUrl, setUsername
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, close, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getBoolean, getByte, getByte, getBytes, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getCursorName, getDate, getDate, getDate, getDate, getDouble, getDouble, getFetchDirection, getFetchSize, getFloat, getFloat, getHoldability, getInt, getInt, getLong, getLong, getMetaData, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getObject, getObject, getObject, getObject, getObject, getObject, getRef, getRef, getRow, getRowId, getRowId, getShort, getShort, getSQLXML, getSQLXML, getStatement, getString, getString, getTime, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isClosed, isFirst, isLast, last, moveToCurrentRow, moveToInsertRow, next, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setFetchDirection, setFetchSize, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull
isWrapperFor, unwrap
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn
static final int CROSS_JOIN
JOIN
提供两个表的交叉产品
static final int INNER_JOIN
JOIN
提供两个表之间的内部连接。
连接任一表中的任何不匹配的行都应该被丢弃。
static final int LEFT_OUTER_JOIN
JOIN
提供了两个表之间的左外连接。
在SQL中,描述了所有记录应从JOIN语句的左侧返回。
static final int RIGHT_OUTER_JOIN
JOIN
提供两个表之间的右外连接。
在SQL中,描述了JOIN语句右侧表中的所有记录,即使左侧的表没有匹配的记录。
static final int FULL_JOIN
JOIN
提供了一个完整的JOIN。
指定来自任何一个表的所有行,而不管其他表中的匹配记录如何。
void addRowSet(Joinable rowset) throws SQLException
RowSet
对象添加到此JoinRowSet
对象。
如果RowSet
对象是第一个要添加到此JoinRowSet
对象的对象,则它构成了要建立的JOIN
关系的基础。
只有当给定的RowSet
对象已经具有使用Joinable
方法setMatchColumn
设置的匹配列时,才应使用此方法。
注: Joinable
对象是任何RowSet
已经实现对象Joinable
接口。
rowset
-所述RowSet
对象,它是要被添加到该JoinRowSet
对象;
它必须实现Joinable
接口并具有匹配列集
SQLException
- 如果(1)将一个空行集添加到此
JoinRowSet
对象中,(2)尚未为
行集设置匹配列,或(3)
行集违反了活动状态
JOIN
Joinable.setMatchColumn(int)
void addRowSet(RowSet rowset, int columnIdx) throws SQLException
RowSet
对象添加到此JoinRowSet
对象中,并将指定的列设置为RowSet
对象的匹配列。
如果RowSet
对象是第一个被添加到这个JoinRowSet
对象,它构成了要建立的JOIN
关系的基础。
当RowSet尚未设置匹配列时,应使用此方法。
rowset
-所述RowSet
对象,它是要被添加到该JoinRowSet
对象;
它可以实现Joinable
接口
columnIdx
-
int
列以成为匹配列的int
SQLException
- if(1)
行集是空的行集,或者(2)
行集违反了活动的方式
JOIN
Joinable.unsetMatchColumn(int)
void addRowSet(RowSet rowset, String columnName) throws SQLException
JoinRowSet
对象,并将指定的列设置为匹配列。
如果行集是第一个要添加到此JoinRowSet
对象中的,则它将构成JOIN
关系的基础。
当给定的RowSet
对象尚不具有匹配列时,应使用此方法。
rowset
-所述RowSet
对象,它是要被添加到该JoinRowSet
对象;
它可以实现Joinable
接口
columnName
- 提供要设置为匹配列的列的名称的
String
对象
SQLException
- 如果(1)
行集是空行集,或者(2)
行集合的匹配列不满足条件
JOIN
void addRowSet(RowSet[] rowset, int[] columnIdx) throws SQLException
RowSet
对象的给定数组中RowSet
一个或多个RowSet
对象添加到此JoinRowSet
对象中,并将每个RowSet
对象的匹配列设置为给定的列索引数组中的匹配列。
在columnIdx第一元件被设置为匹配列第一RowSet
在行集对象,columnIdx的第二元件被设置为匹配列在行集的第二个元素,依此类推。
第一个RowSet
对象添加到这个JoinRowSet
对象中形成了JOIN
关系的基础。
当给定的RowSet
对象尚未具有匹配列时,应使用此方法。
rowset
- 要添加到JOIN
的一个或多个RowSet
对象的JOIN
;
它可以实现Joinable
接口
columnIdx
- 一个
int
值的数组,
int
要设置为
行集中
RowSet
对象的匹配列的索引的索引
SQLException
- 如果(1)一个空的行集被添加到这个
JoinRowSet
对象,(2)没有为
行集中的
RowSet
对象设置匹配列,或者(3)被添加的
RowSet
对象违反了活动
JOIN
void addRowSet(RowSet[] rowset, String[] columnName) throws SQLException
RowSet
对象的给定数组中RowSet
一个或多个RowSet
对象添加到此JoinRowSet
对象中,并将每个RowSet
对象的匹配列设置为给定列名称数组中的匹配列。
在COLUMNNAME第一元件被设置为匹配列第一RowSet
在行集对象,COLUMNNAME的第二元件被设置为匹配列在行集的第二个元素,依此类推。
第一个RowSet
对象添加到这个JoinRowSet
对象中形成了JOIN
关系的基础。
当给定的RowSet
对象尚未具有匹配列时,应使用此方法。
rowset
- 要添加到JOIN
的一个或多个RowSet
对象的JOIN
;
它可以实现Joinable
接口
columnName
- 一个
String
值的数组,
String
要设置为
行集中的
RowSet
对象的匹配列的
RowSet
SQLException
- 如果(1)一个空的行集被添加到这个
JoinRowSet
对象,(2)没有为
行集中的
RowSet
对象设置匹配列,或者(3)被添加的
RowSet
对象违反了活动
JOIN
Collection<?> getRowSets() throws SQLException
Collection
包含对象RowSet
已经添加到该物体JoinRowSet
对象。
这应返回包含在范围内的RowSet的“N”数字JOIN
和维护,而在这个联盟已经发生的任何更新。
Collection
对象组成的
RowSet
对象添加到此
JoinRowSet
对象
SQLException
- 如果发生错误,生成要返回的
Collection
对象
String[] getRowSetNames() throws SQLException
String
数组,其中
RowSet
添加到此
JoinRowSet
对象的
RowSet
对象的名称。
String
数组的
RowSet
对象在这个
JoinRowSet
对象中的名称
SQLException
- 如果
RowSet
对象的名称发生错误
CachedRowSet.setTableName(java.lang.String)
CachedRowSet toCachedRowSet() throws SQLException
CachedRowSet
包含此数据对象JoinRowSet
对象,它可以保存到使用数据源SyncProvider
对象为CachedRowSet
对象。
如果任何更新或修改已应用于JoinRowSet,则该方法返回的CachedRowSet将无法将其更改回数据源中的原始行和表。 返回的CachedRowSet实例不应包含修改数据,它应该清除其原始SQL语句的所有属性。 应用程序应使用RowSet.setCommand
方法重置SQL语句。
为了允许将更改持久化回原始表的数据源,应该在JoinRowSet对象实例上使用并调用acceptChanges
方法。 实现可以利用其实现中的内部数据和更新跟踪与SyncProvider进行交互,以保持任何更改。
SQLException
- 如果组装CachedRowSet对象时发生错误
RowSet
, CachedRowSet
, SyncProvider
boolean supportsCrossJoin()
boolean supportsInnerJoin()
boolean supportsLeftOuterJoin()
boolean supportsRightOuterJoin()
boolean supportsFullJoin()
void setJoinType(int joinType) throws SQLException
JOIN
施加在包含在JoinRowSet对象实例中的表。
如果不支持给定的JOIN
类型,那么实现应该抛出一个SQLException。
joinType
- 标准的JoinRowSet.XXX静态字段定义的SQL
JOIN
即可重新配置JoinRowSet实例。
SQLException
- 如果不支持
JOIN
类型设置
getJoinType()
String getWhereClause() throws SQLException
JOIN
通过提供的SQL字符串描述JOIN
或提供的文字说明,以帮助使用应用程序JoinRowSet
SQLException
- 如果在生成WHERE子句的表示中发生错误。
int getJoinType() throws SQLException
int
管理此JoinRowSet实例的集合SQL JOIN
int。
返回的类型将是标准JoinRowSet中类型之一: CROSS_JOIN
, INNER_JOIN
, LEFT_OUTER_JOIN
, RIGHT_OUTER_JOIN
或FULL_JOIN
。
JOIN
的标准JoinRowSet静态字段定义之一。
JoinRowSet.INNER_JOIN
作为默认值返回JOIN
类型是没有类型已被明确设置。
SQLException
- 如果发生错误,确定由JoinRowSet实例支持的SQL
JOIN
类型。
setJoinType(int)