- 既知のすべてのサブインタフェース:
CachedRowSet,FilteredRowSet,JdbcRowSet,JoinRowSet,WebRowSet
public interface Joinable
1.0 Background
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
- 関連項目:
JoinRowSet
-
メソッドのサマリー
修飾子と型 メソッド 説明 int[]getMatchColumnIndexes()setMatchColumn(int[] columnIdxes)メソッドを使って、このRowSetオブジェクトに設定された一致列のインデックスを取得します。String[]getMatchColumnNames()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
void setMatchColumn(int columnIdx) throws SQLException指定された列をこのRowSetオブジェクトの一致列として設定します。JoinRowSetオブジェクトは、一致列に基づいて、このRowSetオブジェクトを追加できます。CachedRowSet™インタフェースなどのサブインタフェースはCachedRowSet.setKeyColumnsメソッドを定義します。このメソッドを使用して、特定の列にプライマリ・キーのセマンティックスを適用できます。setMatchColumn(int columnIdx)メソッドの実装では、CachedRowSetオブジェクトでプライマリ・キー列を一致列として設定するときに、キー列の制約を維持すべきです。- パラメータ:
columnIdx- 一致列として設定される列のインデックスを示すint- 例外:
SQLException- 無効な列インデックスが設定された場合- 関連項目:
setMatchColumn(int[]),unsetMatchColumn(int)
-
setMatchColumn
void setMatchColumn(int[] columnIdxes) throws SQLException指定された列をこのRowSetオブジェクトの一致列として設定します。JoinRowSetオブジェクトは、一致列に基づいて、このRowSetオブジェクトを追加できます。- パラメータ:
columnIdxes- 一致列として設定される列のインデックスを示すintの配列- 例外:
SQLException- 無効な列インデックスが設定された場合- 関連項目:
setMatchColumn(int[]),unsetMatchColumn(int[])
-
setMatchColumn
void setMatchColumn(String columnName) throws SQLException指定された列をこのRowSetオブジェクトの一致列として設定します。JoinRowSetオブジェクトは、一致列に基づいて、このRowSetオブジェクトを追加できます。CachedRowSetインタフェースなどのサブインタフェースはCachedRowSet.setKeyColumnsメソッドを定義します。このメソッドを使用して、特定の列にプライマリ・キーのセマンティックスを適用できます。setMatchColumn(String columnIdx)メソッドの実装では、CachedRowSetオブジェクトでプライマリ・キー列を一致列として設定するときに、キー列の制約を維持すべきです。- パラメータ:
columnName- 一致列として設定される列の名前を指定するStringオブジェクト- 例外:
SQLException- 無効な列名が設定された場合、列名がnullの場合、または列名が空文字列の場合- 関連項目:
unsetMatchColumn(int),setMatchColumn(int[])
-
setMatchColumn
void setMatchColumn(String[] columnNames) throws SQLException指定された列をこのRowSetオブジェクトの一致列として設定します。JoinRowSetオブジェクトは、一致列に基づいて、このRowSetオブジェクトを追加できます。- パラメータ:
columnNames- 一致列として設定される列の名前を指定するStringオブジェクトの配列- 例外:
SQLException- 無効な列名が設定された場合、列名がnullの場合、または列名が空文字列の場合- 関連項目:
unsetMatchColumn(int),setMatchColumn(int[])
-
getMatchColumnIndexes
int[] getMatchColumnIndexes() throws SQLExceptionsetMatchColumn(int[] columnIdxes)メソッドを使って、このRowSetオブジェクトに設定された一致列のインデックスを取得します。- 戻り値:
- この
RowSetオブジェクトの一致列として設定された列のインデックスを示すint配列 - 例外:
SQLException- 一致列が設定されていない場合- 関連項目:
setMatchColumn(int),unsetMatchColumn(int)
-
getMatchColumnNames
String[] getMatchColumnNames() throws SQLExceptionsetMatchColumn(String [] columnNames)メソッドを使って、このRowSetオブジェクトに設定された一致列の名前を取得します。- 戻り値:
- この
RowSetオブジェクトの一致列として設定された列の名前を指定するStringオブジェクトの配列 - 例外:
SQLException- 一致列が設定されていない場合- 関連項目:
setMatchColumn(int),unsetMatchColumn(int)
-
unsetMatchColumn
void unsetMatchColumn(int columnIdx) throws SQLExceptionこのRowSetオブジェクトの一致列として指定された列の設定を解除します。Joinableインタフェースを実装するRowSetオブジェクトは、指定された列上でCachedRowSet.unsetKeyColumnsメソッドが呼び出されるまでキーと同様の制約が実施されることを保証する必要があります。- パラメータ:
columnIdx- 一致列としての設定を解除される列のインデックスを示すint- 例外:
SQLException- 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
setMatchColumn(int)
-
unsetMatchColumn
void unsetMatchColumn(int[] columnIdxes) throws SQLExceptionこのRowSetオブジェクトの一致列として指定された列の設定を解除します。- パラメータ:
columnIdxes- 一致列としての設定を解除される列のインデックスを示すintの配列- 例外:
SQLException- 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
setMatchColumn(int)
-
unsetMatchColumn
void unsetMatchColumn(String columnName) throws SQLExceptionこのRowSetオブジェクトの一致列として指定された列の設定を解除します。Joinableインタフェースを実装するRowSetオブジェクトは、指定された列上でCachedRowSet.unsetKeyColumnsメソッドが呼び出されるまでキーと同様の制約が実施されることを保証する必要があります。- パラメータ:
columnName- 一致列としての設定を解除される列の名前を指定するStringオブジェクト- 例外:
SQLException- 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
setMatchColumn(int)
-
unsetMatchColumn
void unsetMatchColumn(String[] columnName) throws SQLExceptionこのRowSetオブジェクトの一致列として指定された列の設定を解除します。- パラメータ:
columnName- 一致列としての設定を解除される列の名前を指定するStringオブジェクトの配列- 例外:
SQLException- 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合- 関連項目:
setMatchColumn(int)
-