public interface Joinable
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 {
:
:
}
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はJoinableインタフェースを実装していないため、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に含めることができます。
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の結果に直接影響を及ぼします。
このアサーションは、一致列を示すために列インデックスではなく列名を使用する場合にもまったく同様です。
JoinRowSet| 修飾子と型 | メソッドと説明 |
|---|---|
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 - 一致列として設定される列のインデックスを示すintSQLException - 無効な列インデックスが設定された場合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.setKeyColumnsメソッドを定義します。このメソッドを使用して、特定の列にプライマリ・キーのセマンティックスを適用できます。setMatchColumn(String columnIdx)メソッドの実装では、CachedRowSetオブジェクトでプライマリ・キー列を一致列として設定するときに、キー列の制約を維持すべきです。
columnName - 一致列として設定される列の名前を指定するStringオブジェクトSQLException - 無効な列名が設定された場合、列名がnullの場合、または列名が空文字列の場合unsetMatchColumn(int), setMatchColumn(int[])void setMatchColumn(String[] columnNames) throws SQLException
RowSetオブジェクトの一致列として設定します。JoinRowSetオブジェクトは、一致列に基づいて、このRowSetオブジェクトを追加できます。columnNames - 一致列として設定される列の名前を指定するStringオブジェクトの配列SQLException - 無効な列名が設定された場合、列名がnullの場合、または列名が空文字列の場合unsetMatchColumn(int), setMatchColumn(int[])int[] getMatchColumnIndexes()
throws SQLException
setMatchColumn(int[] columnIdxes)メソッドを使って、このRowSetオブジェクトに設定された一致列のインデックスを取得します。RowSetオブジェクトの一致列として設定された列のインデックスを示すint配列SQLException - 一致列が設定されていない場合setMatchColumn(int), unsetMatchColumn(int)String[] getMatchColumnNames() throws SQLException
setMatchColumn(String [] columnNames)メソッドを使って、このRowSetオブジェクトに設定された一致列の名前を取得します。RowSetオブジェクトの一致列として設定された列の名前を指定するStringオブジェクトの配列SQLException - 一致列が設定されていない場合setMatchColumn(int), unsetMatchColumn(int)void unsetMatchColumn(int columnIdx)
throws SQLException
RowSetオブジェクトの一致列として指定された列の設定を解除します。
Joinableインタフェースを実装するRowSetオブジェクトは、指定された列上でCachedRowSet.unsetKeyColumnsメソッドが呼び出されるまでキーと同様の制約が実施されることを保証する必要があります。
columnIdx - 一致列としての設定を解除される列のインデックスを示すintSQLException - 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合setMatchColumn(int)void unsetMatchColumn(int[] columnIdxes)
throws SQLException
RowSetオブジェクトの一致列として指定された列の設定を解除します。columnIdxes - 一致列としての設定を解除される列のインデックスを示すintの配列SQLException - 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合setMatchColumn(int)void unsetMatchColumn(String columnName) throws SQLException
RowSetオブジェクトの一致列として指定された列の設定を解除します。
Joinableインタフェースを実装するRowSetオブジェクトは、指定された列上でCachedRowSet.unsetKeyColumnsメソッドが呼び出されるまでキーと同様の制約が実施されることを保証する必要があります。
columnName - 一致列としての設定を解除される列の名前を指定するStringオブジェクトSQLException - 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合setMatchColumn(int)void unsetMatchColumn(String[] columnName) throws SQLException
RowSetオブジェクトの一致列として指定された列の設定を解除します。columnName - 一致列としての設定を解除される列の名前を指定するStringオブジェクトの配列SQLException - 無効な列名が指定された場合、または指定された列が以前に一致列として設定されていない場合setMatchColumn(int) バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.