- 既知のすべてのサブインタフェース:
CachedRowSet
,FilteredRowSet
,JdbcRowSet
,JoinRowSet
,WebRowSet
1.0 背景
Joinable
インタフェースは、一致列の取得と設定のメソッドを提供します。これはRowSet
オブジェクトをJoinRowSet
オブジェクトに追加することによって形成されるSQL JOIN
の形成の基礎となります。
標準RowSet
実装は、JoinRowSet
オブジェクトに追加するために、Joinable
インタフェースを実装できます。 このインタフェースを実装すると、RowSet
オブジェクトで、一致列の設定、取得、情報の取得ができるJoinable
メソッドを使用できるようになります。 アプリケーションはJoinable
インタフェースを実装していないRowSet
オブジェクトをJoinRowSet
オブジェクトに追加できますが、このためには、RowSet
オブジェクトと一致列の両方、またはRowSet
オブジェクトの配列と一致列の配列の両方をとるいずれかのJoinRowSet.addRowSet
メソッドを使用する必要があります。
Joinable
インタフェースのメソッドにアクセスするには、RowSet
オブジェクトで5つの標準RowSet
インタフェースのうち少なくとも1つのインタフェースを実装し、さらに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
インタフェースの利用により、単一の表にまとめられた1つ以上のRowSet
オブジェクトからデータを取得できるようになります。このとき、データベースとの接続を作成する必要はありません。 そのため、未接続のRowSet
オブジェクトで使用することに適しています。 それでも、接続しているかどうかに関係なく、すべてのRowSet
オブジェクトがこのインタフェースを実装できます。 常にデータ・ソースに接続されているJdbcRowSet
オブジェクトは、JoinRowSet
オブジェクトに含めなくても、直接SQL JOIN
に含めることができます。
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 SQL
の結果に直接影響を及ぼします。
このアサーションは、一致列を示すために列インデックスではなく列名を使用する場合にもまったく同様です。
- 導入されたバージョン:
- 1.5
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明int[]
setMatchColumn(int[] columnIdxes)
メソッドを使って、このRowSet
オブジェクトに設定された一致列のインデックスを取得します。String[]
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
オブジェクトの一致列として指定された列の設定を解除します。
-
メソッドの詳細
-
setMatchColumn
void setMatchColumn(int columnIdx) throws SQLException 指定された列をこのRowSet
オブジェクトの一致列として設定します。JoinRowSet
オブジェクトは、一致列に基づいて、このRowSet
オブジェクトを追加できます。CachedRowSet
インタフェースなどのサブインタフェースは、特定の列に主キー・セマンティクスを適用できるようにするCachedRowSet.setKeyColumns
メソッドを定義します。setMatchColumn(int columnIdx)
メソッドの実装では、CachedRowSet
オブジェクトでプライマリ・キー列を一致列として設定するときに、キー列の制約を維持すべきです。- パラメータ:
columnIdx
- 一致列として設定される列のインデックスを示すint
- 例外:
SQLException
- 無効な列インデックスが設定された場合- 関連項目:
-
setMatchColumn
void setMatchColumn(int[] columnIdxes) throws SQLException 指定された列をこのRowSet
オブジェクトの一致列として設定します。JoinRowSet
オブジェクトは、一致列に基づいて、このRowSet
オブジェクトを追加できます。- パラメータ:
columnIdxes
- 一致列として設定される列のインデックスを示すint
の配列- 例外:
SQLException
- 無効な列インデックスが設定された場合- 関連項目:
-
setMatchColumn
void setMatchColumn(String columnName) throws SQLException 指定された列をこのRowSet
オブジェクトの一致列として設定します。JoinRowSet
オブジェクトは、一致列に基づいて、このRowSet
オブジェクトを追加できます。CachedRowSet
インタフェースなどのサブインタフェースはCachedRowSet.setKeyColumns
メソッドを定義します。このメソッドを使用して、特定の列にプライマリ・キーのセマンティックスを適用できます。setMatchColumn(String columnIdx)
メソッドの実装では、CachedRowSet
オブジェクトでプライマリ・キー列を一致列として設定するときに、キー列の制約を維持すべきです。- パラメータ:
columnName
- 一致列として設定される列の名前を指定するString
オブジェクト- 例外:
SQLException
- 無効な列名が設定された場合、列名がnullの場合、または列名が空文字列の場合- 関連項目:
-
setMatchColumn
void setMatchColumn(String[] columnNames) throws SQLException 指定された列をこのRowSet
オブジェクトの一致列として設定します。JoinRowSet
オブジェクトは、一致列に基づいて、このRowSet
オブジェクトを追加できます。- パラメータ:
columnNames
- 一致列として設定される列の名前を指定するString
オブジェクトの配列- 例外:
SQLException
- 無効な列名が設定された場合、列名がnullの場合、または列名が空文字列の場合- 関連項目:
-
getMatchColumnIndexes
int[] getMatchColumnIndexes() throws SQLExceptionsetMatchColumn(int[] columnIdxes)
メソッドを使って、このRowSet
オブジェクトに設定された一致列のインデックスを取得します。- 戻り値:
- この
RowSet
オブジェクトの一致列として設定された列のインデックスを示すint
配列 - 例外:
SQLException
- 一致列が設定されていない場合- 関連項目:
-
getMatchColumnNames
String[] getMatchColumnNames() throws SQLExceptionsetMatchColumn(String [] columnNames)
メソッドを使って、このRowSet
オブジェクトに設定された一致列の名前を取得します。- 戻り値:
- この
RowSet
オブジェクトの一致列として設定された列の名前を指定するString
オブジェクトの配列 - 例外:
SQLException
- 一致列が設定されていない場合- 関連項目:
-
unsetMatchColumn
void unsetMatchColumn(int columnIdx) throws SQLException このRowSet
オブジェクトの一致列として指定された列の設定を解除します。Joinable
インタフェースを実装するRowSet
オブジェクトは、指定された列上でCachedRowSet.unsetKeyColumns
メソッドが呼び出されるまでキーと同様の制約が実施されることを保証する必要があります。- パラメータ:
columnIdx
- 一致列としての設定を解除される列のインデックスを示すint
- 例外:
SQLException
- 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
-
unsetMatchColumn
void unsetMatchColumn(int[] columnIdxes) throws SQLException このRowSet
オブジェクトの一致列として指定された列の設定を解除します。- パラメータ:
columnIdxes
- 一致列としての設定を解除される列のインデックスを示すint
の配列- 例外:
SQLException
- 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
-
unsetMatchColumn
void unsetMatchColumn(String columnName) throws SQLException このRowSet
オブジェクトの一致列として指定された列の設定を解除します。Joinable
インタフェースを実装するRowSet
オブジェクトは、指定された列上でCachedRowSet.unsetKeyColumns
メソッドが呼び出されるまでキーと同様の制約が実施されることを保証する必要があります。- パラメータ:
columnName
- 一致列としての設定を解除される列の名前を指定するString
オブジェクト- 例外:
SQLException
- 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
-
unsetMatchColumn
void unsetMatchColumn(String[] columnName) throws SQLException このRowSet
オブジェクトの一致列として指定された列の設定を解除します。- パラメータ:
columnName
- 一致列としての設定を解除される列の名前を指定するString
オブジェクトの配列- 例外:
SQLException
- 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
-