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
TM などのサブインタフェースは CachedRowSet.setKeyColumns
メソッドを定義します。このメソッドを使って、特定の列に主キーのセマンティクスを適用できます。setMatchColumn(int columnIdx)
メソッドの実装では、CachedRowSet
オブジェクトで主キー列を一致列として設定するときに、キー列の制約を維持する必要があります。
columnIdx
- 一致列として設定される列のインデックスを示す int
SQLException
- 無効な列インデックスが設定された場合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
- 一致列としての設定を解除される列のインデックスを示す int
SQLException
- 無効な列インデックスが指定された場合、または指定された列が以前に一致列として設定されていない場合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, 2013, Oracle and/or its affiliates. All rights reserved.