JavaTM Platform
Standard Ed. 6

javax.sql.rowset
インタフェース CachedRowSet

すべてのスーパーインタフェース:
Joinable, ResultSet, RowSet, Wrapper
既知のサブインタフェースの一覧:
FilteredRowSet, JoinRowSet, WebRowSet

public interface CachedRowSet
extends RowSet, Joinable

CachedRowSet のすべての標準実装が実装しなければならないインタフェースです。  

Sun Microsystems から提供された CachedRowSet インタフェースのリファレンス実装は、標準実装です。開発者はこれをそのまま使用することも、拡張することも、またはこのインタフェースの実装を独自に作成することもできます。  

CachedRowSet オブジェクトは、メモリー内に行をキャッシュする、データ行のコンテナであり、常にそのデータソースに接続していなくても処理を実行できます。また、スクロール、更新、直列化が可能な JavaBeansTM コンポーネントです。CachedRowSet オブジェクトには、通常、結果セットの行が格納されますが、スプレッドシートなど、表形式のあらゆるファイルの行を格納することもできます。リファレンス実装は、ResultSet オブジェクトからのデータの取得しかサポートしませんが、開発者は、その他の表形式のデータソースにアクセスできるように、SyncProvider 実装を拡張することができます。  

アプリケーションは、CachedRowSet オブジェクト内のデータを変更できます。 これらの変更は、データソースにも反映されます。  

CachedRowSet オブジェクトは「未接続の」行セットです。 つまり、データソースとの接続を少ししか利用しません。CachedRowSet オブジェクトがデータソースに接続するのは、データを読み取って自身に行を読み込むときと、配下のデータソースに変更内容を反映するときだけです。それ以外のときは、データの変更中も含めて、データソースから切断されています。RowSet オブジェクトは、このように、データソースから切断されているためムダが少なく、その他のコンポーネントに渡しやすくなっています。たとえば、未接続の RowSet オブジェクトを直列化し、回線経由で PDA などの thin クライアントに渡すことができます。  

1.0CachedRowSet オブジェクトの作成

次のコードは、リファレンス実装 (RI) の CachedRowSetのデフォルトコンストラクタを使用して、デフォルトの CachedRowSetオブジェクトを作成します。
     CachedRowSetImpl crs = new CachedRowSetImpl();k
 
この新しい CachedRowSetオブジェクトは、そのプロパティーを BaseRowSetオブジェクトのデフォルトのプロパティーに設定します。 さらに、同期プロバイダとして RIOptimisticProviderオブジェクトを持ちます。RI に含まれる 2 つの SyncProvider実装のうちの 1 つ、RIOptimisticProviderは、同期プロバイダが指定されていない場合に SyncFactoryシングルトンから提供されるデフォルトのプロバイダです。  

SyncProvider オブジェクトは、CachedRowSet オブジェクトと、データソースからデータを読み取って自身にデータを読み込むリーダー (RowSetReader オブジェクト) を提供します。リーダーを実装することにより、ResultSet オブジェクトや表形式のファイルからデータを読み取ることができます。SyncProvider オブジェクトは、ライター(RowSetWriter オブジェクト) も提供します。 ライターは、配下のデータソース内のデータから切断されている間に CachedRowSet オブジェクトに加えられた変更内容を同期します。  

ライターを実装することにより、さまざまなレベルで、行セットに値を読み込んだあとでデータソース内の値が変更された場合に発生する競合のチェックや予防を行うことができます。RIOptimisticProvider 実装は、競合がほとんどないか、まったくないものとして、ロックを一切設定しません。この実装は、競合がない場合にのみ、CachedRowSet オブジェクトの値でデータソースを更新します。変更されたデータをデータソースへ書き込む目的でのみ実装されるライターもあります。 この実装は、競合のチェックを行わないか、その全く逆で、データソース内のデータの変更を十分防げるだけのロックを設定することによって行われます。また、そのほぼ中間のライター実装もあります。  

CachedRowSet オブジェクトは、SyncFactory シングルトンに登録された任意の SyncProvider 実装を使用できます。アプリケーションは、次のコードを呼び出すことにより、登録されている SyncProvider 実装を検出できます。

      java.util.Enumeration providers = SyncFactory.getRegisteredProviders();
 

CachedRowSet オブジェクトで使用する SyncProviderオブジェクトを指定する方法は、次の 2 とおりです。 コンストラクタに実装名を提供する
次のコードは、デフォルト値 (ただし SyncProvider を指定) で初期化される CachedRowSet オブジェクト crs2 を作成します。

          CachedRowSetImpl crs2 = new CachedRowSetImpl(
                                 "com.fred.providers.HighAvailabilityProvider");
     
  • CachedRowSet メソッド setSyncProviderを使って SyncProvider を設定する
    次のコードは、crsSyncProvider オブジェクト (デフォルトのコンストラクタで作成された CachedRowSet オブジェクト) をリセットします。
               crs.setSyncProvider("com.fred.providers.HighAvailabilityProvider");
          
    SyncFactoryおよび SyncProviderを参照してください。

    2.0CachedRowSet オブジェクトからのデータの取得

    データは、ResultSetインタフェースから継承された取得メソッドを使って、CachedRowSetオブジェクトから取得されます。次の例は、crsCachedRowSetオブジェクトとして行の繰り返し処理を行い、各行から列の値を取得する方法を示します。最初の例では、列番号を取る取得メソッドを使用します。 2 番目の例では、列名を取る取得メソッドを使用します。列番号は、通常、RowSetオブジェクトのコマンドが SELECT * FROM TABLENAMEの形式になる場合に使用されます。 列名は、列名を指定するコマンドでよく使用されます。
        while (crs.next()) {
            String name = crs.getString(1);
            int id = crs.getInt(2);
            Clob comment = crs.getClob(3);
            short dept = crs.getShort(4);
            System.out.println(name + "  " + id + "  " + comment + "  " + dept);
        }
     
        while (crs.next()) {
            String name = crs.getString("NAME");
            int id = crs.getInt("ID");
            Clob comment = crs.getClob("COM");
            short dept = crs.getShort("DEPT");
            System.out.println(name + "  " + id + "  " + comment + "  " + dept);
        }
     

    3.0RowSetMetaData の取得

    アプリケーションは、RowSetMetaDataオブジェクト上に ResultSetMetaDataメソッドと RowSetMetaDataメソッドを呼び出すことにより、CachedRowSetオブジェクト内の列に関する情報を取得できます。次のコードの抜粋では、crsCachedRowSetオブジェクトとして、この処理について説明します。1 行目では、crs内の列に関する情報を持つ RowSetMetaDataオブジェクトを作成します。ResultSetインタフェースから継承された getMetaDataメソッドは、ResultSetMetaDataオブジェクトを返します。 返されたオブジェクトは、変数 rsmdに割り当てられる前に RowSetMetaDataオブジェクトにキャストされます。2 行目では、jrsの列数を確認します。 3 行目では、jrsの 2 番目の列に格納された値の JDBC 型を取得します。
         RowSetMetaData rsmd = (RowSetMetaData)crs.getMetaData();
         int count = rsmd.getColumnCount();
         int type = rsmd.getColumnType(2);
     
    RowSetMetaDataインタフェースは、次の 2 つの点で、ResultSetMetaDataインタフェースとは異なっています。 注:RowSetMetaDataオブジェクトを返すためには、実装で java.sql.ResultSetに定義された getMetaData()メソッドをオーバーライドし、RowSetMetaDataオブジェクトを返す必要があります。

    CachedRowSet オブジェクトの更新

    CachedRowSetオブジェクトの更新方法は ResultSetオブジェクトの更新方法と同様ですが、更新中、行セットはデータソースに接続していないので、配下のデータソースに変更を加える追加手順が必要になります。CachedRowSetオブジェクトは、updateRowメソッドか insertRowメソッドを呼び出したあと、acceptChangesメソッドを呼び出して、更新内容をデータソースに書き込む必要があります。次の例では、CachedRowSetオブジェクト crs内の行にカーソルが置かれています。 このコードは、現在の行の 2 つの列の値を更新し、RowSetオブジェクトの配下のデータソースを更新します。
         crs.updateShort(3, 58);
         crs.updateInt(4, 150000);
         crs.updateRow();
         crs.acceptChanges();
     

    次の例では、挿入行に移動し、挿入行の上に新しい行を作成して、これを行セットに挿入します。 さらに、acceptChanges メソッドを呼び出して、配下のデータソースに新しい行を追加します。取得メソッドの場合と同様に、更新メソッドでも、列インデックスか列名を使って処理対象の列を指定できます。

         crs.moveToInsertRow();
         crs.updateString("Name", "Shakespeare");
         crs.updateInt("ID", 10098347);
         crs.updateShort("Age", 58);
         crs.updateInt("Sal", 150000);
         crs.insertRow();
         crs.moveToCurrentRow();
         crs.acceptChanges();
     

    注:insertRow() メソッドで、CachedRowSet オブジェクトの挿入行の内容を挿入する場所は、実装で定義します。CachedRowSet インタフェースのリファレンス実装は、現在の行の直後に新しい行を挿入しますが、ほかの任意の箇所にも挿入するように実装できます。  

    これらの例における acceptChanges メソッドの使用方法に注目してください。このメソッドは、RowSet オブジェクトのライターを内部で呼び出し、データソースに変更を書き込むことにより、CachedRowSet オブジェクト内の変更内容を配下のデータソースへ伝達します。このために、ライターは、データソースとの接続を確立しなければなりません。最初の 2 つのコードの抜粋は、updateRow または insertRow の呼び出し後ただちに acceptChanges メソッドを呼び出します。しかし、複数の行を変更する場合は、 updateRowinsertRow の呼び出しがすべて完了してから acceptChanges を呼び出す方法のほうが効率がよくなります。acceptChanges を 1 回しか呼び出さない場合は、接続を 1 つ確立するだけで済みます。  

    4.0 配下のデータソースの更新

    acceptChangesメソッドの実行時には、行セットへの変更点を配下のデータソースへ書き込むため、背後で CachedRowSetオブジェクトのライター、RowSetWriterImplオブジェクトが呼び出されます。このライターが実装されることにより、データソースへの接続が確立され、更新情報が書き込まれます。  

    ライターは、セクション 1 の「CachedRowSet オブジェクトの作成」で説明したとおり、SyncProvider インタフェースの実装を介して利用できます。デフォルトのリファレンス実装プロバイダ RIOptimisticProvider は、オプティミスティック並行処理制御機構を利用するため、ライターを実装しています。つまり、行セットがデータベースから切断されている間、配下のデータベースはロックされず、データソースへデータを書き込む前に競合がないかどうかの確認が行われるだけとなります。競合がある場合、データソースへは何も書き込まれません。  

    SyncProvider クラスによって提供されるリーダー/ライターの機能は、プラグイン可能であり、データの取得と更新のカスタマイズに利用できます。別の並行処理制御機構が必要な場合は、setSyncProvider メソッドを使って、別の SyncProvider 実装をプラグインできます。  

    オプティミスティック並行処理制御ルーチンを使用するため、RIOptismisticProvider は、現在の値と元の値 (現在の値の直前の値) の両方を保持します。RowSet オブジェクト内のデータが変更されなかった場合、現在の値と元の値は同一 (RowSet オブジェクトが最初に生成されたときの値) になります。しかし、RowSet オブジェクト内の値が変更された場合、現在の値と元の値は一致しません。 この段階では、元の値は初期値のままです。その後の RowSet オブジェクト内のデータの変更により、元の値と現在の値は一致しなくなりますが、以前現在の値だった値が元の値になります。  

    元の値を追跡することで、ライターは、RowSet オブジェクトの元の値とデータベース内の値を比較できます。データベース内の値が RowSet オブジェクトの元の値と一致しない場合、データベース内の値が変更されており、競合が発生していることを意味します。ライターを使って競合のチェックを行うか、どの程度までチェックを行うか、競合をどのように処理するかは、すべて実装によって異なります。  

    5.0 リスナーの登録と通知

    JavaBeans コンポーネントなので、すべての行セットは、BaseRowSetクラスからリスナーの登録と、変更内容を通知するためのメソッドを継承して、JavaBeans イベントモデルに参与します。CachedRowSetオブジェクトのリスナーは、行セット内に変更があったかどうかを通知されるコンポーネントです。たとえば、CachedRowSetオブジェクトにクエリーの結果が含まれ、これらの結果が表や棒グラフとして表示されるとします。 表や棒グラフは、行セットのリスナーとして登録されることで、変更内容を反映するよう自身の更新を行うことができます。表や棒グラフのクラスがリスナーになるには、RowSetListenerインタフェースを実装する必要があります。その後、これらを CachedRowSetオブジェクトのリスナーのリストに追加します。 次のコードを参照してください。
        crs.addRowSetListener(table);
        crs.addRowSetListener(barGraph);
     
    カーソルを移動したり、データを変更したりする CachedRowSetメソッドも、登録済みのリスナーに変更を通知します。 したがって、crs内に変更があると、tablebarGraphはその通知を受けます。  

    6.0 thin クライアントへのデータの送信

    CachedRowSetオブジェクトは、主に、アプリケーションコンポーネント間でのデータの受け渡しに利用されます。CachedRowSetオブジェクトは直列化可能なので、たとえば、サーバー環境で稼動中のエンタープライズ JavaBeans コンポーネントによって実行されたクエリーの結果を、Web ブラウザで稼動中のクライアントに、ネットワーク経由で送信するために利用することができます。  

    未接続の CachedRowSet オブジェクトは、同じデータを持つ ResultSet オブジェクトよりもコンパクトなので、リソースの制限やセキュリティー上の理由により JDBC ドライバを使用するのが難しい PDA などの thin クライアントへのデータ送信に最適です。このように、CachedRowSet オブジェクトでは、JDBC API を完全に実装しなくても行を取得できます。  

    7.0 スクロールと更新

    CachedRowSetオブジェクトには、スクロール機能や更新機能を持たない ResultSetオブジェクトにこれらの機能を提供する働きもあります。DBMS がスクロールと更新の機能を完全にサポートしない場合は、CachedRowSetオブジェクトを使って、JDBC テクノロジを使用可能なドライバの機能を向上させることができます。スクロール機能を持たない読み取り専用の ResultSetオブジェクトにスクロール機能と更新機能を持たせるには、CachedRowSetオブジェクトを作成して、その ResultSetオブジェクトのデータを読み込むだけで済みます。具体例については、次のコードの抜粋を参照してください。 この例では、stmtStatementオブジェクトを表します。
        ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEES");
        CachedRowSetImpl crs = new CachedRowSetImpl();k
        crs.populate(rs);
     

    rs オブジェクトの場合と同様に、crs オブジェクトに、表 EMPLOYEES のデータが追加されます。ただし、crs のカーソルは前方、後方、または特定の行に移動できるのに対して、rs のカーソルは前方にしか移動できません。また、crs に更新機能があるのに対して、rs には更新機能はありません。 これは、CachedRowSet オブジェクトに、スクロール機能と更新機能がデフォルトで用意されているからです。  

    つまり、CachedRowSet オブジェクトは、データソースの外部でキャッシュされる未接続の行になります。サイズが小さく、直列化可能なので、回線経由で簡単に送信できるだけでなく、thin クライアントへのデータ送信にも適しています。ただし、メモリー内に同時に格納できるデータ量が決まっているため、CachedRowSet オブジェクトのサイズは制限されています。  

    8.0 汎用データアクセスの取得

    CachedRowSetクラスには、リレーショナルデータベース以外のソースからデータを取得し、格納できるという利点があります。行セットのリーダーを実装することにより、任意の表形式のデータソース (スプレッドシート、フラットファイルを含む) 行セットのデータを読み取り、読み込みできます。CachedRowSetオブジェクトとそのメタデータは、いずれもゼロから作成可能なので、行セットのファクトリとして機能するコンポーネントは、この機能を利用して、非 SQL データソースからデータを含む行セットを作成できます。しかし、ほとんどの場合、CachedRowSetオブジェクトは、JDBC API を使って SQL データベースから取得したデータを格納します。  

    9.0 プロパティーの設定

    すべての行セットは、プロパティーのセットを持っています。 このセットは通常、ツールを使って設定します。行セットのプロパティーの数と種類は、行セットの機能とデータの取得方法によって異なります。たとえば、ResultSet オブジェクトからデータを取得する行セットは、データベース接続を作成するために必要なプロパティーを設定する必要があります。行セットが DriverManager機能を使って接続を作成する場合は、適切なドライバを識別する JDBC URL のプロパティーと、ユーザー名とパスワードを指定するプロパティーを設定する必要があります。一方、行セットが DataSource オブジェクトを使って接続を作成する場合 (この方法が優先される) は、JDBC URL のプロパティーを設定する必要はありません。代わりに、データソースの論理名のプロパティーとユーザー名およびパスワードのプロパティーを設定する必要があります。  

    注:DataSource オブジェクトを使って接続を作成する場合は、Java Naming and Directory InterfaceTM (JNDI) API を使用するネームサービスに、DataSource オブジェクトを登録する必要があります。登録は通常、システム管理者が行います。  

    行セットにデータベースのデータを読み込むには、コマンドプロパティーを設定する必要があります。このプロパティーは、PreparedStatement オブジェクトを表すクエリーです。 これにより、クエリーは、設計時ではなく実行時に設定されるパラメータプレースホルダを持つことができます。これらのプレースホルダパラメータに値を設定するため、行セットは、各データ型の値を設定する設定メソッドを提供します。 これらの設定メソッドは、PreparedStatement インタフェースによって提供される設定メソッドとよく似ています。  

    次のコードの抜粋は、CachedRowSet オブジェクト crs にコマンドプロパティーを設定する方法を示しています。ツールを使ってプロパティーを設定する場合、このコードを使用します。

        crs.setCommand("SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS " +
                       "WHERE CREDIT_LIMIT > ?AND REGION = ?");
     

    コマンドのプレースホルダパラメータの設定に使用される値は、RowSet オブジェクトの params フィールドに、Vector オブジェクトとして格納されます。CachedRowSet クラスは、params フィールド内の要素を設定する設定メソッドのセットを提供します。次のコードの抜粋は、先ほどの例で、クエリー内の 2 つのパラメータを設定する方法を示しています。

        crs.setInt(1, 5000);
        crs.setString(2, "West");
     

    params フィールドに 2 つの要素が追加されました。 これらはそれぞれ、要素 2 つ分の長さの配列になります。 最初の要素はパラメータ番号、2 番目の要素は設定する値を表します。この場合、params の最初の要素は 15000、2 番目の要素は 2"West" になります。アプリケーションは、execute メソッドを呼び出すことにより、この RowSet オブジェクトのリーダーを呼び出します。 これにより、その readData メソッドが呼び出されます。この実装に含まれる readData は、params 内の値を取得し、これらを使ってコマンドのプレースホルダパラメータを設定します。以下のコードの抜粋では、Connection オブジェクト con の取得後に、リーダーがプレースホルダパラメータを設定する手順を示します。

        PreparedStatement pstmt = con.prepareStatement(crs.getCommand());
        reader.decodeParams();
        // decodeParams figures out which setter methods to use and does something
        // like the following:
        //    for (i = 0; i < params.length; i++) {
        //        pstmt.setObject(i + 1, params[i]);
        //    }
     

    この時点で、crs のコマンドは、クエリー "SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS WHERE CREDIT_LIMIT > 5000 AND REGION = "West" になります。readData メソッドは、次のコードでこのコマンドを実行することにより、crs に読み込まれる rs のデータを取得します。

         ResultSet rs = pstmt.executeQuery();
     

    前のコードの抜粋では、背後で行われる処理について説明しました。 これらのコードは、アプリケーション内では非表示であり、readDatadecodeParams などのメソッドを呼び出しません。これに対して、以下のコードの抜粋は、アプリケーションの実行内容を示しています。 このコードでは、行セットのコマンドを設定し、コマンドのパラメータを設定し、コマンドを実行します。execute メソッドを呼び出すだけで、crs に、要求された表 CUSTOMERS のデータが読み込まれます。

        crs.setCommand("SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS" +
                       "WHERE CREDIT_LIMIT > ?AND REGION = ?");
        crs.setInt(1, 5000);
        crs.setString(2, "West");
        crs.execute();
     

    10.0 ページングデータ

    CachedRowSetオブジェクトはデータをメモリーに格納するため、一度に格納できるデータの量は使用可能なメモリーの量によって決まります。この制限を回避するため、CachedRowSetオブジェクトでは、ResultSetオブジェクトから「ページ」と呼ばれるチャンクで、データを取得できます。この機構を利用するには、アプリケーションで、setPageSizeメソッドを使用して、ページに含める行数を設定します。つまり、ページサイズを 5 に設定している場合、データソースから一度に 5 行のデータのチャンクがフェッチされます。また、アプリケーションでは、オプションで、一度にフェッチできる最大行数も設定できます。最大行数を 0 に設定した場合、または最大行数を設定しない場合、一度にフェッチ可能な行数の制限はありません。  

    プロパティーの設定後、CachedRowSet オブジェクトに、populate または execute メソッドを使用して、データを格納する必要があります。以下のコード行に、populate メソッドを使用した例を示します。このメソッドでは、ResultSet ハンドルと、行の取得を開始する ResultSet オブジェクト内の行の 2 つのパラメータをとります。

         CachedRowSet crs = new CachedRowSetImpl();
         crs.setMaxRows(20);
         crs.setPageSize(4);
         crs.populate(rsHandle, 10);
     
    このコードを実行すると、crsrsHandleの 10 行目から始まる 4 行分が格納されます。  

    次のコードの抜粋に execute メソッドを使用して、CachedRowSet オブジェクトに格納する例を示します。 このメソッドはパラメータとして Connection オブジェクトをとる場合ととらない場合があります。このコードでは executeConnection オブジェクト conHandle を渡しています。  

    次のコードの抜粋と上記のコードには 2 つの違いがあります。まず、setMaxRows メソッドを呼び出していないため、crs に格納できる最大行数に制限がありません (crs には常に、メモリー内に格納できるデータ量の制限が最優先で存在することに注意してください)。2 点目の違いは execute メソッドに、行の取得を開始する ResultSet オブジェクト内からの行番号を渡せないことです。このメソッドは常に先頭行から開始します。

         CachedRowSet crs = new CachedRowSetImpl();
         crs.setPageSize(5);
         crs.execute(conHandle);
     
    このコードを実行すると、crsに対するコマンドによって生成された ResultSetオブジェクトから 5 行分のデータが crsに格納されます。crsのライターは conHandleを使用してデータソースに接続し、crsに対してコマンドを実行します。これにより、アプリケーションは、ほかの CachedRowSetオブジェクトのデータの操作と同じように crsのデータを操作できます。  

    アプリケーションで次のページ (データのチャンク) にアクセスするには、nextPage メソッドを呼び出します。このメソッドは新しい CachedRowSet オブジェクトを作成し、それに次のページのデータを格納します。たとえば、CachedRowSet オブジェクトのコマンドが 1000 行分のデータを格納する ResultSet オブジェクト rs を返したとします。ページサイズが 100 に設定されている場合、nextPage メソッドの最初の呼び出しで、rs の先頭の 100 行を格納する CachedRowSet オブジェクトが作成されます。この先頭の 100 行のデータの処理が終わったら、アプリケーションは再び nextPage メソッドを呼び出して、rs から次の 100 行を格納する別の CachedRowSet オブジェクトを作成できます。最初の CachedRowSet オブジェクトのデータは、2番目の CachedRowSet オブジェクトのデータに置き換えられているため、メモリー内に残っていません。nextPage メソッドの 10 回目の呼び出しでは、10 番目の CachedRowSet オブジェクトに rs からの最後の 100 行のデータが格納され、これらがメモリーに格納されます。常にメモリーには、1 つの CachedRowSet オブジェクトのデータだけが格納されることになります。  

    nextPage メソッドは、現在のページが行の最後のページでない間は true を返し、それ以降のページがなくなると false を返します。したがって、次のコード行に示すように、while ループで使用すれば、すべてのページを取得できます。

         CachedRowSet crs = CachedRowSetImpl();
         crs.setPageSize(100);
         crs.execute(conHandle);
    
         while(crs.nextPage()) {
             while(crs.next()) {
                 . . . // operate on chunks (of 100 rows each) in crs, 
                       // row by row
             }
         }
     
    このコードの抜粋を実行すると、アプリケーションは 1000 行をすべてトラバースしますが、メモリーには一度に 100 行までしか格納されません。  

    CachedRowSet インタフェースは previousPage メソッドも定義しています。nextPage メソッドが ResultSetnext メソッドに類似しているのと同様、previousPage メソッドは ResultSetprevious メソッドに似ています。nextPage メソッドと同様に、previousPage はページサイズとして設定されただけの行数を格納する CachedRowSet オブジェクトを作成します。そのため、たとえば、上記のコードの抜粋の最後の while ループ内で previousPage メソッドを使用して、最後のページから先頭のページまで、逆にページを移動することができます。previousPage メソッドは、while ループで使用できる点で nextPage とも似ています。 ただし、前に別のページが存在する間 true を返し、それ以前のページがなくなると、false を返す点が異なります。  

    次のコードの抜粋に示すように、previous メソッドは各ページの最後の行の末尾にカーソルを置くことにより、各ページの最終行から先頭行まで移動します。もしくは、各ページの先頭行の前にカーソルを置き、while ループで next メソッドを使用して、各ページの先頭行から最終行まで移動することもできます。  

    次のコードの抜粋では、上記のコードの抜粋の続きで、10 個目の CachedRowSet オブジェクトのカーソルが最後の行にあると仮定しています。このコードではカーソルを最終行のあとに移動しているため、previous メソッドの最初の呼び出しで、カーソルを最終行に戻します。最後のページ (CachedRowSet オブジェクト crs) のすべての行を移動すると、コードは while ループに入り、9 ページ目に移動し、逆方向に行を移動し、8 ページ目に移動し、逆方向に行を移動し、同様にして先頭ページの先頭行まで進んでいきます。

         crs.afterLast();
         while(crs.previous())  {
             . . . // navigate through the rows, last to first
         {
         while(crs.previousPage())  {
             crs.afterLast();
             while(crs.previous())  {
                 . . . // go from the last row to the first row of each page
             }
         }
     


    フィールドの概要
    static boolean COMMIT_ON_ACCEPT_CHANGES
              acceptChanges()の呼び出し時に、CachedRowSetオブジェクトの SyncProvider に変更をコミットさせます。
     
    インタフェース java.sql.ResultSet から継承されたフィールド
    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
     
    メソッドの概要
     void acceptChanges()
              この CachedRowSet オブジェクトに対する行の更新、挿入、削除などの変更を配下のデータソースへ伝達します。
     void acceptChanges(Connection con)
              指定された Connectionオブジェクトを使ってデータソースへの接続を確立して、CachedRowSet オブジェクトの配下のデータソースへ行の更新、挿入、削除などの変更をすべて伝達します。
     boolean columnUpdated(int idx)
              この CachedRowSet オブジェクトの現在の行内の指定された列が更新されたかどうかを示します。
     boolean columnUpdated(String columnName)
              この CachedRowSet オブジェクトの現在の行内の指定された列が更新されたかどうかを示します。
     void commit()
              CachedRowSet オブジェクトの SyncProvider には、ResultSetConnection オブジェクトか、コンストラクタに渡される JDBC プロパティーが含まれます。
     CachedRowSet createCopy()
              この CachedRowSet オブジェクトのデータのディープコピーである RowSet オブジェクトを作成します。
     CachedRowSet createCopyNoConstraints()
              この CachedRowSet オブジェクトのディープコピーであるが、独立している CachedRowSet オブジェクトを作成します。
     CachedRowSet createCopySchema()
              この CachedRowSet オブジェクトの空のコピーである CachedRowSet オブジェクトを作成します。
     RowSet createShared()
              この CachedRowSet オブジェクトと同じデータによって、バックアップされた新しい RowSet オブジェクトを返します。
     void execute(Connection conn)
              データソースとなる結果セットを生成するための指定の接続を使用して、この CachedRowSet オブジェクトにデータを読み込みます。
     int[] getKeyColumns()
              この CachedRowSet オブジェクトの行を一意に識別するキーを構成する列を示す 1つ以上の列番号を格納する配列を返します。
     ResultSet getOriginal()
              この CachedRowSet オブジェクトの元の値を格納する ResultSet オブジェクトを返します。
     ResultSet getOriginalRow()
              この CachedRowSet オブジェクトの現在の行のみの元の値を格納する ResultSet オブジェクトを返します。
     int getPageSize()
              CachedRowSet オブジェクトのページサイズを返します。
     RowSetWarning getRowSetWarnings()
              この RowSet オブジェクトに関する呼び出しによって報告される最初の警告を返します。
     boolean getShowDeleted()
              削除マークが付けられた行を現在の行セット内に表示するかどうかを示す boolean を取得します。
     SyncProvider getSyncProvider()
              この CachedRowSet オブジェクトの SyncProvider 実装を取得します。
     String getTableName()
              この CachedRowSet オブジェクトの作成に使用されたオブジェクト (テーブル) の識別子を返します。
     boolean nextPage()
              CachedRowSet の現在のページを増分します。
     void populate(ResultSet data)
              この CachedRowSet オブジェクトに指定された ResultSetオブジェクトのデータを読み込みます。
     void populate(ResultSet rs, int startRow)
              この CachedRowSet オブジェクトに指定された ResultSetオブジェクトのデータを読み込みます。
     boolean previousPage()
              CachedRowSet の現在のページを減分します。
     void release()
              この CachedRowSet オブジェクトの現在のコンテンツを解放し、登録済みのすべてのリスナーに rowSetChanged イベントを送信します。
     void restoreOriginal()
              この CachedRowSet オブジェクトを元の値 (前回の変更セットの前の値) に戻します。
     void rollback()
              CachedRowSet オブジェクトの SyncProvider には、元の ResultSetConnection オブジェクトか、それに渡される JDBC プロパティーが含まれます。
     void rollback(Savepoint s)
              CachedRowSet オブジェクトの SyncProvider には、元の ResultSetConnection オブジェクトか、それに渡される JDBC プロパティーが含まれます。
     void rowSetPopulated(RowSetEvent event, int numRows)
              登録済みリスナーに、指定された RowSetEvent オブジェクト内の RowSet オブジェクトが多数の追加行を読み込んだことを通知します。
     void setKeyColumns(int[] keys)
              この CachedRowSet オブジェクトの keyCols フィールドに、指定された列番号の配列 (この CachedRowSet オブジェクト内の行を一意に識別するキーを構成する) を設定します。
     void setMetaData(RowSetMetaData md)
              指定された RowSetMetaDataオブジェクトを使って、CachedRowSet オブジェクトのメタデータを設定します。
     void setOriginalRow()
              この CachedRowSet オブジェクトの現在の行を元の行として設定します。
     void setPageSize(int size)
              CachedRowSet オブジェクトのページサイズを設定します。
     void setShowDeleted(boolean b)
              showDeleted プロパティーとして、削除マーク付きの行を現在の行セット内に表示するかどうかを指定する boolean を設定します。
     void setSyncProvider(String provider)
              この CachedRowSet オブジェクトの SyncProvider オブジェクトに指定したオブジェクトを設定します。
     void setTableName(String tabName)
              この CachedRowSet オブジェクトの派生元のテーブルの識別子を、指定のテーブル名に設定します。
     int size()
              この CachedRowSet オブジェクト内の行数を返します。
     Collection<?> toCollection()
              この CachedRowSet オブジェクトを、この CachedRowSet オブジェクトのすべてのデータを格納する Collection オブジェクトに変換します。
     Collection<?> toCollection(int column)
              この CachedRowSet オブジェクト内の指定された列を Collection オブジェクトに変換します。
     Collection<?> toCollection(String column)
              この CachedRowSet オブジェクト内の指定された列を Collectionオブジェクトに変換します。
     void undoDelete()
              現在の行の削除を取り消して、リスナーに行が変更されたことを通知します。
     void undoInsert()
              もし行が挿入された状態であれば、CachedRowSet オブジェクトから現在の行をただちに削除し、リスナーに行が変更されたことを通知します。
     void undoUpdate()
              もし行が変更されていれば、前回の更新操作をただちに元に戻します。
     
    インタフェース javax.sql.RowSet から継承されたメソッド
    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
     
    インタフェース java.sql.ResultSet から継承されたメソッド
    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, 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, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull
     
    インタフェース java.sql.Wrapper から継承されたメソッド
    isWrapperFor, unwrap
     
    インタフェース javax.sql.rowset.Joinable から継承されたメソッド
    getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn
     

    フィールドの詳細

    COMMIT_ON_ACCEPT_CHANGES

    static final boolean COMMIT_ON_ACCEPT_CHANGES
    acceptChanges()の呼び出し時に、CachedRowSetオブジェクトの SyncProvider に変更をコミットさせます。false に設定されている場合、変更内容は、CachedRowSetインタフェーストランザクションメソッドが呼び出されるまでコミットされません

    関連項目:
    commit(), rollback(), 定数フィールド値
    メソッドの詳細

    populate

    void populate(ResultSet data)
                  throws SQLException
    この CachedRowSet オブジェクトに指定された ResultSetオブジェクトのデータを読み込みます。  

    このメソッドは、アプリケーションがオープンしている ResultSet オブジェクトに接続しているとき execute メソッドの代替として使用できます。新しい接続を開いてこの CachedRowSetオブジェクトのコマンドを再実行する必要がない点で、populate メソッドは、パラメータを取らない executeメソッドよりも効率的です。また、populate メソッドを使用することは、ResultSetオブジェクトを取る execute メソッドよりも便利です。

    パラメータ:
    data - この CachedRowSet オブジェクトに読み込まれる データを含む ResultSet オブジェクト
    例外:
    SQLException - null の ResultSet オブジェクトが提供された場合、 またはこの CachedRowSet オブジェクトが 関連する ResultSetMetaData オブジェクトを取得できない場合
    関連項目:
    execute(java.sql.Connection), ResultSet, ResultSetMetaData

    execute

    void execute(Connection conn)
                 throws SQLException
    データソースとなる結果セットを生成するための指定の接続を使用して、この CachedRowSet オブジェクトにデータを読み込みます。このメソッドは、作成するすべてのデータベース接続をクローズすることで、データソースからデータを読み取っているときとデータソースへデータを書き込んでいるとき以外、この CachedRowSetオブジェクトが未接続の状態であることを保証します。  

    この CachedRowSetオブジェクトのリーダーは、行セットのコマンドを実行し、結果として生成される ResultSet オブジェクトからこの CachedRowSet オブジェクトにデータを読み込むために、connを使ってデータソースへの接続を確立します。また、このメソッドは、この CachedRowSetオブジェクトの生成後に、 conn をクローズします。  

    実装の生成後にこのメソッドを呼び出すと、コンテンツとメタデータがリセットされます。また、acceptChangesメソッドを呼び出して、まだ適用していない更新を確定したあと、このメソッドを呼び出すと、更新内容は失われます。

    パラメータ:
    conn - 有効なプロパティーを持つ標準 JDBC Connection オブジェクト properties
    例外:
    SQLException - 無効な Connection オブジェクトが提供された場合、 またはデータソースとの接続の確立時に エラーが発生した場合
    関連項目:
    populate(java.sql.ResultSet), Connection

    acceptChanges

    void acceptChanges()
                       throws SyncProviderException
    この CachedRowSet オブジェクトに対する行の更新、挿入、削除などの変更を配下のデータソースへ伝達します。  

    このメソッドは、この CachedRowSetオブジェクトのライター上で呼び出され、背後で処理を行います。標準 CachedRowSet 実装は、SyncFactoryシングルトンを使って SyncProvider インスタンスを取得することにより、RowSetWriterオブジェクト (ライター) を提供します。ライターは、この CachedRowSetオブジェクトへの変更をデータソースへ返送しようとします。  

    acceptChangesメソッドが正常に実行された場合、データソースへ変更が書き込まれ、現在の行の値が元の行の値に変更されます。  

    使用する SyncProvider実装の同期レベルによって、ライターは元の値とデータソース内の値を比較し、競合のチェックを行います。競合が検出された場合、たとえば RIOptimisticProvider実装は、SyncProviderException をスローし、データソースへは何も書き込みません。  

    アプリケーションは、SyncProviderExceptionオブジェクトをキャッチし、このオブジェクトに含まれる SyncResolverオブジェクトを取得することができます。SyncResolverオブジェクトは、行ごとに競合を一覧し、現在存在する競合を解決するまで新しい競合が発生しないように、データソースをロックします。さらに、個々の競合に対して、競合を検査し、データソースに残す値を設定するメソッドを提供します。すべての競合が解決されると、アプリケーションは再度 acceptChangesメソッドを呼び出して、解決された値をデータソースへ書き込む必要があります。データソース内のすべての値がすでに持続値である場合、acceptChangesメソッドは何も行いません。  

    一部のプロバイダ実装は、競合を防ぐためにロックを使用します。この場合、acceptChangesメソッドを呼び出したとき、ライターによるデータソースへの変更の書き込みは必ず成功します。このメソッドは、updateRowメソッド、insertRow メソッド、または deleteRowメソッドの呼び出し後ただちに呼び出せますが、すべての変更が完了して、1 つだけ接続を確立すればよい状態で呼び出したほうが効率的です。  

    注:acceptChanges() メソッドは、COMMIT_ON_ACCEPT_CHANGESが true に設定されているかどうかを判断します。trueに設定されている場合、同期内のすべての更新がデータソースにコミットされます。それ以外の場合、アプリケーションは、commit()メソッドか rollback() メソッドを明示的に呼び出す必要があります

    例外:
    SQLException - カーソルが挿入行にある場合
    SyncProviderException - 配下の同期プロバイダのライターが、 データソースへの更新の書き込みに 失敗した場合
    関連項目:
    acceptChanges(java.sql.Connection), RowSetWriter, SyncFactory, SyncProvider, SyncProviderException, SyncResolver

    acceptChanges

    void acceptChanges(Connection con)
                       throws SyncProviderException
    指定された Connectionオブジェクトを使ってデータソースへの接続を確立して、CachedRowSet オブジェクトの配下のデータソースへ行の更新、挿入、削除などの変更をすべて伝達します。  

    もう一方の acceptChanges メソッドは RowSetオブジェクト内にすでに定義されている Connection オブジェクト (初期生成時に使用される接続)を使用するので、接続を渡されません。  

    この形式の acceptChangesメソッドは、引数を取らない形式とよく似ていますが、配下のデータソースが JDBCデータソースである場合にしか使用できない点で、その他の形式とは異なります。SyncProvider は、CachedRowSetオブジェクトが正常に同期されるように、更新された Connection プロパティーを使って RowSetWriter構成をリセットする必要があります。

    acceptChangesメソッドが正常に実行された場合、データソースへ変更が書き込まれ、現在の行の値が元の行の値に変更されます。  

    使用する SyncProvider実装の同期レベルによって、ライターは元の値とデータソース内の値を比較し、競合のチェックを行います。競合が検出された場合、たとえば RIOptimisticProvider実装は、SyncProviderException をスローし、データソースへは何も書き込みません。  

    アプリケーションは、SyncProviderExceptionオブジェクトをキャッチし、このオブジェクトに含まれる SyncResolverオブジェクトを取得することができます。SyncResolverオブジェクトは、行ごとに競合を一覧し、現在存在する競合を解決するまで新しい競合が発生しないように、データソースをロックします。さらに、個々の競合に対して、競合を検査し、データソースに残す値を設定するメソッドを提供します。すべての競合が解決されると、アプリケーションは再度 acceptChangesメソッドを呼び出して、解決された値をデータソースへ書き込む必要があります。データソース内のすべての値がすでに持続値である場合、acceptChangesメソッドは何も行いません。  

    一部のプロバイダ実装は、競合を防ぐためにロックを使用します。この場合、acceptChangesメソッドを呼び出したとき、ライターによるデータソースへの変更の書き込みは必ず成功します。このメソッドは、updateRowメソッド、insertRow メソッド、または deleteRowメソッドの呼び出し後ただちに呼び出せますが、すべての変更が完了して、1 つだけ接続を確立すればよい状態で呼び出したほうが効率的です。  

    注:acceptChanges() メソッドは、COMMIT_ON_ACCEPT_CHANGESが true に設定されているかどうかを判断します。trueに設定されている場合、同期内のすべての更新がデータソースにコミットされます。false の場合、アプリケーションは、commitメソッドか rollback メソッドを明示的に呼び出す必要があります

    パラメータ:
    con - 標準JDBC Connection オブジェクト
    例外:
    SQLException - カーソルが挿入行にある場合
    SyncProviderException - 配下の同期プロバイダのライターが、 データソースへの更新の書き込みに 失敗した場合
    関連項目:
    acceptChanges(), RowSetWriter, SyncFactory, SyncProvider, SyncProviderException, SyncResolver

    restoreOriginal

    void restoreOriginal()
                         throws SQLException
    この CachedRowSet オブジェクトを元の値 (前回の変更セットの前の値) に戻します。行セットが変更されていない場合や、変更セットが 1 つしかない場合は、この CachedRowSetオブジェクトに読み込まれた値が元の値になります。  

    このメソッドが呼び出された場合、CachedRowSet実装は、現在の行セットインスタンスへのすべての更新、挿入、および削除を以前の値で置き換える必要があります。さらに、カーソルを最初の行に戻し、rowSetChangedイベントをトリガーして、登録済みのすべてのリスナーに通知を送る必要があります。

    例外:
    SQLException - この CachedRowSet オブジェクトの現在の値を 以前の値に戻している間にエラーが発生した場合
    関連項目:
    RowSetListener.rowSetChanged(javax.sql.RowSetEvent)

    release

    void release()
                 throws SQLException
    この CachedRowSet オブジェクトの現在のコンテンツを解放し、登録済みのすべてのリスナーに rowSetChanged イベントを送信します。このメソッドを呼び出すと、まだ適用されていない更新はすべて破棄され、行セットの行がすべて削除されます。配下のデータソースとの対話は行われないので、行セットのコンテンツ、メタデータ、コンテンツの更新を復元することはできません。  

    この CachedRowSetオブジェクトは、コンテンツとその更新が完全に消去されるまでロックされます。 したがって、この RowSetオブジェクトへの参照を格納するその他のコンポーネントによるダーティ読み取りは発生しません。また、この CachedRowSetオブジェクトを読み取るすべてのコンポーネントが読み取りを完了するまで、コンテンツを解放することはできません。この CachedRowSetオブジェクトの動作は、rowSetChanged イベントがトリガーされたあと、正常な状態に戻ります。  

    JDBC プロパティーと Synchronization SPI プロパティーを含むメタデータは、将来使用するために保持されます。commandプロパティーなどのプロパティーは、この CachedRowSetオブジェクトの生成元のデータソースに関連付ける必要があります。  

    close メソッドは、すべての行セットを復元可能とし、ガベージコレクタに行セットの Java VMリソースを許可しますが、このメソッドは、行セットを空にします。

    例外:
    SQLException - この CachedRowSet オブジェクトのコンテンツのフラッシュ時に エラーが発生した場合
    関連項目:
    RowSetListener.rowSetChanged(javax.sql.RowSetEvent), ResultSet.close()

    undoDelete

    void undoDelete()
                    throws SQLException
    現在の行の削除を取り消して、リスナーに行が変更されたことを通知します。このメソッドを呼び出したあと、現在の行は削除の対象から除外されます。このメソッドは、行セットの寿命の間いつでも呼び出すことができます。  

    さらに、複数の行の削除を取り消すこともできます。 この場合は、次のようなカーソル位置制御メソッドを使って、カーソルの位置を調整します。

    • CachedRowSet.absolute
    • CachedRowSet.first
    • CachedRowSet.last

    例外:
    SQLException - (1) 現在の行が削除されていない場合、 (2) カーソルが挿入行、最初の行の前、 または最終行の後ろにある場合
    関連項目:
    undoInsert(), ResultSet.cancelRowUpdates()

    undoInsert

    void undoInsert()
                    throws SQLException
    もし行が挿入された状態であれば、CachedRowSet オブジェクトから現在の行をただちに削除し、リスナーに行が変更されたことを通知します。このメソッドは、行セットの寿命の間いつでも呼び出せます。 現在の行が例外制限 (下記参照) 内にある場合、現在の行の挿入を取り消します。  

    さらに、複数の行の挿入を取り消すこともできます。 この場合は、次のようなカーソル位置制御メソッドを使って、カーソルの位置を調整します。

    • CachedRowSet.absolute
    • CachedRowSet.first
    • CachedRowSet.last

    例外:
    SQLException - (1) 現在の行が挿入されていない場合、 (2) カーソルが最初の行の前、最終行の後ろ、 または挿入行にある場合
    関連項目:
    undoDelete(), ResultSet.cancelRowUpdates()

    undoUpdate

    void undoUpdate()
                    throws SQLException
    もし行が変更されていれば、前回の更新操作をただちに元に戻します。このメソッドは、最終的に行内のすべての更新が前回の同期化 (acceptChanges)または生成の直前の状態に戻るように、すべての列の更新を元に戻します。このメソッドは、挿入行の更新中にも呼び出すことができます。  

    undoUpdate は、行セットの寿命の間いつでも呼び出すことができます。ただし、同期化が行われたあと、行セットにさらに変更が加えられるまでは、このメソッドは何も行いません。

    例外:
    SQLException - カーソルが、この CachedRowSet オブジェクトの 最初の行の前または最後の行の後ろにある場合
    関連項目:
    undoDelete(), undoInsert(), ResultSet.cancelRowUpdates()

    columnUpdated

    boolean columnUpdated(int idx)
                          throws SQLException
    この CachedRowSet オブジェクトの現在の行内の指定された列が更新されたかどうかを示します。

    パラメータ:
    idx - 更新のチェックを行う列を示す int
    戻り値:
    指定された列が明らかに更新されている場合は true、 そうでない場合は false
    例外:
    SQLException - カーソルが挿入行、最初の行の前、 または最終行の後ろにある場合
    関連項目:
    DatabaseMetaData.updatesAreDetected(int)

    columnUpdated

    boolean columnUpdated(String columnName)
                          throws SQLException
    この CachedRowSet オブジェクトの現在の行内の指定された列が更新されたかどうかを示します。

    パラメータ:
    columnName - 更新のチェックを行う列の 名前を指定する String オブジェクト
    戻り値:
    列が明らかに更新されている場合は true、 そうでない場合は false
    例外:
    SQLException - カーソルが挿入行、最初の行の前、 または最終行の後ろにある場合
    関連項目:
    DatabaseMetaData.updatesAreDetected(int)

    toCollection

    Collection<?> toCollection()
                               throws SQLException
    この CachedRowSet オブジェクトを、この CachedRowSet オブジェクトのすべてのデータを格納する Collection オブジェクトに変換します。Collection フレームワークの抽象性により、実装は、この Collectionオブジェクトをある程度自由に表現することができます。各行は汎用的な Collection実装か、または TreeMapオブジェクトや Vectorオブジェクトなどの特殊な Collection実装のどちらかで完全に表現する必要があります。SQL NULL列値は Java プログラミング言語で null として表現する必要があります。  

    CachedRowSet インタフェースの標準的なリファレンス実装では、行セットに TreeMapオブジェクトを使用し、各行の値を Vectorオブジェクトに格納します。大半の実装で同様に処理することが想定されます。  

    TreeMap型のコレクションによって、キーのクラスの本来の順序に従って、マップが昇順でソートされます。各キーは、RowSetオブジェクトの 1 行に対応する Vector オブジェクトを参照します。したがって、各 Vectorオブジェクトのサイズは、RowSet オブジェクト内の列数に正確に一致する必要があります。TreeMapコレクションで使用するキーは、実装ごとに決定します。 実装では、RowSet オブジェクト自体、または配下の SQLデータにすでに設定されているキーにより、内部の RowSet表構造内の使用可能なセットキーを利用することができます。  

    戻り値:
    この CachedRowSet オブジェクトの各行の 値を格納する Collection オブジェクト
    例外:
    SQLException - コレクションの生成時にエラーが発生した場合
    関連項目:
    toCollection(int), toCollection(String)

    toCollection

    Collection<?> toCollection(int column)
                               throws SQLException
    この CachedRowSet オブジェクト内の指定された列を Collection オブジェクトに変換します。Collection フレームワークの抽象性により、実装は、この Collectionオブジェクトをある程度自由に表現することができます。各列値は汎用的な Collection 実装か、または Vectorオブジェクトなどの特殊な Collection 実装のどちらかで完全に表現する必要があります。SQL NULL列値は Java プログラミング言語で null として表現する必要があります。  

    標準的なリファレンス実装では、Vectorオブジェクトを使用して、列値を格納しますが、大半の実装で同様に処理することが想定されます。Vectorオブジェクトを使用する場合は、サイズをこの CachedRowSetオブジェクトの行数と正確に一致させる必要があります。

    パラメータ:
    column - 値を Collection オブジェクトで表現する 列を示す int
    戻り値:
    この CachedRowSet オブジェクトの指定された列に格納された 値を含む Collection オブジェクト
    例外:
    SQLException - コレクションの生成時にエラーが発生した場合、 または無効な列 ID が提供された場合
    関連項目:
    toCollection(), toCollection(String)

    toCollection

    Collection<?> toCollection(String column)
                               throws SQLException
    この CachedRowSet オブジェクト内の指定された列を Collectionオブジェクトに変換します。Collection フレームワークの抽象性により、実装は、この Collectionオブジェクトをある程度自由に表現することができます。各列値は汎用的な Collection 実装か、または Vectorオブジェクトなどの特殊な Collection 実装のどちらかで完全に表現する必要があります。SQL NULL列値は Java プログラミング言語で null として表現する必要があります。  

    標準的なリファレンス実装では、Vectorオブジェクトを使用して、列値を格納しますが、大半の実装で同様に処理することが想定されます。Vectorオブジェクトを使用する場合は、サイズをこの CachedRowSetオブジェクトの行数と正確に一致させる必要があります。

    パラメータ:
    column - コレクションで表現される値を持つ列の 名前を指定する String オブジェクト
    戻り値:
    この CachedRowSet オブジェクトの指定された列に格納された 値を含む Collection オブジェクト
    例外:
    SQLException - コレクションの生成時にエラーが発生した場合、 または無効な列 ID が提供された場合
    関連項目:
    toCollection(), toCollection(int)

    getSyncProvider

    SyncProvider getSyncProvider()
                                 throws SQLException
    この CachedRowSet オブジェクトの SyncProvider 実装を取得します。行セットは、このメソッドを内部で使用して、行セットとデータソース間の読み取りまたは書き込み操作をトリガーします。たとえば、行セットは、データを格納するため、SyncProviderから行セットリーダー (RowSetReaderオブジェクト) のハンドルを取得しなければならない場合があります。
         RowSetReader rowsetReader = null;
         SyncProvider provider = 
             SyncFactory.getInstance("javax.sql.rowset.provider.RIOptimisticProvider");
             if (provider instanceof RIOptimisticProvider) {
                 rowsetReader = provider.getRowSetReader();
             }
     
    rowsetReaderが行セット実装内の private なアクセス可能フィールドであるとすると、アプリケーションが executeメソッドを呼び出すと、このメソッドはリーダーの readDataメソッドを呼び出して、RowSetオブジェクトにデータを格納します。
        
         rowsetReader.readData((RowSetInternal)this);
     

    さらに、アプリケーションはこのメソッドから返される SyncProviderオブジェクトを使用して、ベンダー、バージョン、プロバイダ ID、同期のグレード、現在設定されているロックなどの SyncProviderオブジェクトに関する情報を返すメソッドを呼び出すことができます。

    戻り値:
    行セットがインスタンス化されたときに設定された SyncProvider オブジェクト。 または、設定されていない場合はデフォルトのプロバイダ
    例外:
    SQLException - SyncProvider オブジェクトを返すときに エラーが発生した場合
    関連項目:
    setSyncProvider(java.lang.String)

    setSyncProvider

    void setSyncProvider(String provider)
                         throws SQLException
    この CachedRowSet オブジェクトの SyncProvider オブジェクトに指定したオブジェクトを設定します。このメソッドで、SyncProviderオブジェクトをリセットできます。  

    CachedRowSet 実装は常に利用可能な SyncProvider機構でインスタンス化する必要がありますが、SyncProviderオブジェクトのリセットが望ましい、または必要とされる場合もあります。たとえば、アプリケーションで、しばらくはデフォルトの SyncProviderオブジェクトを使用しておき、あとで最近利用できるようになった、より必要にかなうプロバイダを選択して使用することができます。  

    SyncProvider オブジェクトをリセットすると、RowSetオブジェクトは SyncFactory から新しい SyncProvider実装を要求します。これにより、以前のすべての接続と元のデータソースとの関係をリセットし、未接続の行セットの同期動作を大幅に変更することができます。

    パラメータ:
    provider - SyncProvider 実装の 完全修飾クラス名を指定する String オブジェクト
    例外:
    SQLException - SyncProvider 実装のリセット中にエラーが発生した場合
    関連項目:
    getSyncProvider()

    size

    int size()
    この CachedRowSet オブジェクト内の行数を返します。

    戻り値:
    行セット内の行数

    setMetaData

    void setMetaData(RowSetMetaData md)
                     throws SQLException
    指定された RowSetMetaDataオブジェクトを使って、CachedRowSet オブジェクトのメタデータを設定します。RowSetReaderオブジェクトは、行セットのコンテンツを読み取る際に、RowSetMetaDataオブジェクトを生成し、RowSetMetaData実装内のメソッドを使って これを初期化します。リファレンス実装では RowSetMetaDataImplクラスを使用します。リーダーが行セットのコンテンツの読み取りを完了すると、このメソッドが内部で呼び出され、RowSetMetaDataオブジェクトが行セットに渡されます。

    パラメータ:
    md - この CachedRowSetオブジェクトの列に関するメタデータを格納する RowSetMetaData オブジェクト
    例外:
    SQLException - 行セットに無効なメタデータが 提供された場合

    getOriginal

    ResultSet getOriginal()
                          throws SQLException
    この CachedRowSet オブジェクトの元の値を格納する ResultSet オブジェクトを返します。  

    ResultSet オブジェクトのカーソルは、先頭行の前に置く必要があります。さらに、返される ResultSetオブジェクトは次のプロパティーを持つ必要があります。

    • ResultSet.TYPE_SCROLL_INSENSITIVE
    • ResultSet.CONCUR_UPDATABLE

    RowSetオブジェクトの元の値は、配下のデータソースと最後の同期の前に格納されていた値です。同期がなかった場合、元の値は、RowSetオブジェクトに格納された値になります。このメソッドは、アプリケーションが acceptChangesメソッドを呼び出し、SyncProviderオブジェクトが競合を確認するように実装されている場合に、内部で呼び出されます。この場合、ライターは元の値とデータソース内の現在の値を比較し、競合を確認します。

    戻り値:
    この CachedRowSet オブジェクトの 元の値を格納する ResultSet オブジェクト
    例外:
    SQLException - ResultSet オブジェクトの生成時にエラーが発生した場合

    getOriginalRow

    ResultSet getOriginalRow()
                             throws SQLException
    この CachedRowSet オブジェクトの現在の行のみの元の値を格納する ResultSet オブジェクトを返します。  

    ResultSet オブジェクトのカーソルは、先頭行の前に置く必要があります。さらに、返される ResultSetオブジェクトは次のプロパティーを持つ必要があります。

    • ResultSet.TYPE_SCROLL_INSENSITIVE
    • ResultSet.CONCUR_UPDATABLE

    戻り値:
    行の元の結果セット
    例外:
    SQLException - 現在行が存在しない場合
    関連項目:
    setOriginalRow()

    setOriginalRow

    void setOriginalRow()
                        throws SQLException
    この CachedRowSet オブジェクトの現在の行を元の行として設定します。  

    このメソッドは、現在の行の変更された値がデータソースと同期されたあとに、内部で呼び出されます。現在の行は、挿入、削除、または更新としてタグ付けしてあってはいけません。  

    setOriginalRow の呼び出しは取り消せません。

    例外:
    SQLException - 現在行が存在しない場合、 または元の行のコンテンツのリセット時にエラーが発生した場合
    関連項目:
    getOriginalRow()

    getTableName

    String getTableName()
                        throws SQLException
    この CachedRowSet オブジェクトの作成に使用されたオブジェクト (テーブル) の識別子を返します。この名前は、繰り返し設定できます。 名前の設定回数や、標準実装が以前のテーブル名を追跡する必要があるかどうかについては、仕様による制限はありません。

    戻り値:
    この CachedRowSet オブジェクトのデータのソースである テーブル名を指定する String オブジェクト。 または、テーブルの名前を設定していない場合は null
    例外:
    SQLException - テーブル名を返すときにエラーが発生した場合
    関連項目:
    ResultSetMetaData.getTableName(int)

    setTableName

    void setTableName(String tabName)
                      throws SQLException
    この CachedRowSet オブジェクトの派生元のテーブルの識別子を、指定のテーブル名に設定します。ライターは、同期時に、この名前を使用して、データ ソースの値と CachedRowSetオブジェクトの値を比較する際に使用するテーブルを判断します。テーブルの識別子は、この CachedRowSetオブジェクトから変更された値を書き込む場所も示します。  

    この CachedRowSet オブジェクトの実装では、内部的に RowSetMetaDataImplオブジェクトに名前を取得させることができます。

    パラメータ:
    tabName - この CachedRowSetオブジェクトが派生した テーブルを識別する String オブジェクト。null は不可、 空の文字列は可能
    例外:
    SQLException - テーブルの名前付けでエラーが発生した場合、 または tabNamenull の場合
    関連項目:
    RowSetMetaData.setTableName(int, java.lang.String), RowSetWriter, SyncProvider

    getKeyColumns

    int[] getKeyColumns()
                        throws SQLException
    この CachedRowSet オブジェクトの行を一意に識別するキーを構成する列を示す 1つ以上の列番号を格納する配列を返します。

    戻り値:
    この CachedRowSet オブジェクトの行の 主キーを構成する 列を示す列番号を格納する配列。主キーを表現する列がない場合、 この配列は空になる
    例外:
    SQLException - この CachedRowSet オブジェクトが空の場合
    関連項目:
    setKeyColumns(int[]), Joinable.getMatchColumnIndexes(), Joinable.getMatchColumnNames()

    setKeyColumns

    void setKeyColumns(int[] keys)
                       throws SQLException
    この CachedRowSet オブジェクトの keyCols フィールドに、指定された列番号の配列 (この CachedRowSet オブジェクト内の行を一意に識別するキーを構成する) を設定します。  

    CachedRowSet オブジェクトが JoinRowSetオブジェクトに含まれる場合、キー列として指定された列が一致列になれば、このメソッドで定義されたキーと生成された制約は保持されます。

    パラメータ:
    keys - この CachedRowSet オブジェクトの主キーを構成する 列を示す int 配列。 配列内の各要素は、0 より大きく、 かつこの行セット内の列数以下である必要がある
    例外:
    SQLException - 指定された配列内の番号が この行セットで有効でない場合
    関連項目:
    getKeyColumns(), Joinable.setMatchColumn(String), Joinable.setMatchColumn(int)

    createShared

    RowSet createShared()
                        throws SQLException
    この CachedRowSet オブジェクトと同じデータによって、バックアップされた新しい RowSet オブジェクトを返します。実際に両方の CachedRowSetオブジェクトは同じデータ上にカーソルを持ちます。その結果、元のオブジェクトによる変更が、そのすべての重複に可視であるのと同様に、重複によるすべての変更が、元のオブジェクトと、その他のすべての重複に可視になります。重複で配下のデータを変更するメソッドを呼び出すと、そのメソッドは、元の CachedRowSetオブジェクトによって呼び出される場合とまったく同じように、登録されたすべてのリスナーに通知します。  

    さらに、このメソッドによって作成される RowSet オブジェクトはこの CachedRowSetオブジェクトと同じプロパティーを持ちます。たとえば、この CachedRowSetオブジェクトが読み取り専用の場合、そのすべての重複も読み取り専用になります。これを更新可能に変更すると、重複も更新可能になります。  

    注:複数のスレッドが createShared() メソッドによって作成された RowSetオブジェクトにアクセスする場合、共有データの整合性を確保するため、次の動作が指定されます。すべての共有された RowSetオブジェクトの読み取りと書き込みは、各オブジェクトと配下の単一の表構造間で逐次行われる必要があります。

    戻り値:
    この CachedRowSet オブジェクトと同じプロパティーを持ち、 同じデータ上にカーソルを持つ 新しい共有 RowSet オブジェクト
    例外:
    SQLException - エラーが発生した場合、または配下のプラットフォームで複製がサポートされていない場合
    関連項目:
    RowSetEvent, RowSetListener

    createCopy

    CachedRowSet createCopy()
                            throws SQLException
    この CachedRowSet オブジェクトのデータのディープコピーである RowSet オブジェクトを作成します。createShared呼び出しによって生成された RowSetオブジェクトの場合とは異なり、元の RowSetオブジェクトのコピーの更新が、元の RowSetオブジェクトに可視であってはなりません。また、元の RowSetに登録されたイベントリスナーのスコープに、新しい RowSetコピーが含まれていてはなりません。また、確立済みの制約制限は保持されなければなりません。

    戻り値:
    新しい RowSetオブジェクト。 CachedRowSet オブジェクトのディープコピーであり、この CachedRowSet オブジェクトからは完全に独立している
    例外:
    SQLException - CachedRowSet オブジェクトのコピーの生成時にエラーが発生した場合
    関連項目:
    createShared(), createCopySchema(), createCopyNoConstraints(), RowSetEvent, RowSetListener

    createCopySchema

    CachedRowSet createCopySchema()
                                  throws SQLException
    この CachedRowSet オブジェクトの空のコピーである CachedRowSet オブジェクトを作成します。コピーには、何も含めず、元の CachedRowSetオブジェクトの表構造だけを表現する必要があります。さらに、元の CachedRowSetオブジェクトに設定された主キーまたは外部キーの制約を、新しい空の CachedRowSetオブジェクトにも等しく適用する必要があります。createSharedメソッド呼び出しによって生成された RowSetオブジェクトとは異なり、createCopySchemaメソッドによるこの CachedRowSetオブジェクトのコピーへの更新は可視にしてはいけません。  

    アプリケーションは、このメソッドによって返された CachedRowSet オブジェクトから WebRowSetオブジェクトを形成し、あとで使用するために、RowSet スキーマ定義を XML にエクスポートできます。

    例外:
    SQLException - この CachedRowSet オブジェクトの 構造の複製時にエラーが発生した場合
    関連項目:
    createShared(), createCopySchema(), createCopyNoConstraints(), RowSetEvent, RowSetListener

    createCopyNoConstraints

    CachedRowSet createCopyNoConstraints()
                                         throws SQLException
    この CachedRowSet オブジェクトのディープコピーであるが、独立している CachedRowSet オブジェクトを作成します。createSharedメソッド呼び出しによって生成された RowSetオブジェクトの場合とは異なり、この CachedRowSetオブジェクトのコピーに対して行われた変更は可視であってはなりません。さらに、この CachedRowSetオブジェクトによって登録されたすべてのイベントリスナーのスコープに新しい RowSetオブジェクトが含まれていてはなりません。また、この CachedRowSetオブジェクトに対して確立された制約制限はコピーに維持されていてはなりません

    戻り値:
    新しい CachedRowSetオブジェクト。 CachedRowSet オブジェクトのディープコピーであり、この CachedRowSet オブジェクトからは完全に独立している
    例外:
    SQLException - CachedRowSet オブジェクトのコピーの生成時にエラーが発生した場合
    関連項目:
    createCopy(), createShared(), createCopySchema(), RowSetEvent, RowSetListener

    getRowSetWarnings

    RowSetWarning getRowSetWarnings()
                                    throws SQLException
    この RowSet オブジェクトに関する呼び出しによって報告される最初の警告を返します。後続の RowSetオブジェクトの警告は、このメソッドが返す RowSetWarningオブジェクトにチェーンされます。 警告チェーンは、新しい行が読み込まれるたびに自動的にクリアされます。このメソッドはクローズされた RowSetオブジェクトの呼び出しには使用しません。 使用すると SQLException がスローされます。

    戻り値:
    RowSetWarning。報告された最初の RowSetWarning オブジェクト。 ない場合は null
    例外:
    SQLException - このメソッドが、閉じられた RowSet 上で呼び出された場合
    関連項目:
    RowSetWarning

    getShowDeleted

    boolean getShowDeleted()
                           throws SQLException
    削除マークが付けられた行を現在の行セット内に表示するかどうかを示す boolean を取得します。true が返された場合、削除行は現在の行とともに表示されます。false が返された場合、削除行は現在の行のセット内に表示されません。デフォルト値は false です。  

    標準行セット実装は、セキュリティー上の配慮または特定の配備シナリオに適合させるため、この動作を制限することができます。これは、定義済みの実装として残され、標準の動作を表しません。  

    注:削除された行を表示すると、一部の標準 JDBC RowSet実装メソッドの動作が複雑になります。しかし、削除された行を表示する機能は、非常に専門的なアプリケーションでしか使用されません。 したがって、ほとんどの行セットユーザーは、この設定を無視してかまいません。

    戻り値:
    削除された行を表示する場合は true、 そうでない場合は false
    例外:
    SQLException - 行セット実装が、削除行が表示されるかどうかを判断できない場合
    関連項目:
    setShowDeleted(boolean)

    setShowDeleted

    void setShowDeleted(boolean b)
                        throws SQLException
    showDeleted プロパティーとして、削除マーク付きの行を現在の行セット内に表示するかどうかを指定する boolean を設定します。値が true の場合、削除された行が現在の行セットとともに表示されます。値が false の場合、削除された行は現在の行セット内に表示されません。  

    標準行セット実装は、セキュリティー上の配慮または特定の配備シナリオに適合させるため、この動作を制限することができます。これは、定義済みの実装として残され、標準の動作を表しません。

    パラメータ:
    b - 削除された行を表示する場合は true、 そうでない場合は false
    例外:
    SQLException - 行セット実装が、削除行の表示または非表示の設定をリセットできない場合
    関連項目:
    getShowDeleted()

    commit

    void commit()
                throws SQLException
    CachedRowSet オブジェクトの SyncProvider には、ResultSetConnection オブジェクトか、コンストラクタに渡される JDBC プロパティーが含まれます。このメソッドは、Connection コミットメソッドをラップして、柔軟な自動コミットまたは非自動コミットのトランザクション制御サポートを提供します。  

    前回のコミット/ロールバックのあと、acceptChanges()メソッドによって行われたすべての変更を永続的なものにします。このメソッドは自動コミットモードが無効になっているときしか使用できません。

    例外:
    SQLException - データベースアクセスエラーが発生した場合、 またはこの CachedRowSet 内の Connection オブジェクトが自動コミットモードである場合
    関連項目:
    Connection.setAutoCommit(boolean)

    rollback

    void rollback()
                  throws SQLException
    CachedRowSet オブジェクトの SyncProvider には、元の ResultSetConnection オブジェクトか、それに渡される JDBC プロパティーが含まれます。  

    現在のトランザクションでのすべての変更を取り消します。このメソッドは自動コミットモードが無効になっているときしか使用できません。

    例外:
    SQLException - データベースアクセスエラーが発生した場合、 またはこの CachedRowSet 内の Connection オブジェクトが自動コミットモードである場合

    rollback

    void rollback(Savepoint s)
                  throws SQLException
    CachedRowSet オブジェクトの SyncProvider には、元の ResultSetConnection オブジェクトか、それに渡される JDBC プロパティーが含まれます。  

    現在のトランザクションでのすべての変更を取り消して、最後の Savepointトランザクションマーカに戻します。このメソッドは自動コミットモードが無効になっているときしか使用できません。

    パラメータ:
    s - Savepointトランザクションマーカ
    例外:
    SQLException - データベースアクセスエラーが発生した場合、 またはこの CachedRowSet 内の Connection オブジェクトが自動コミットモードである場合

    rowSetPopulated

    void rowSetPopulated(RowSetEvent event,
                         int numRows)
                         throws SQLException
    登録済みリスナーに、指定された RowSetEvent オブジェクト内の RowSet オブジェクトが多数の追加行を読み込んだことを通知します。numRowsパラメータにより、このイベントは、numRowごとにトリガーされます。  

    イベントのソースは event.getSource メソッドで取得できます。

    パラメータ:
    event - イベントのソースである RowSet オブジェクトを 格納する RowSetEvent オブジェクト
    numRows - 読み込み時の行の間隔数。 ここで、読み込まれた CachedRowSet がトリガーされる。デフォルト値はゼロ。 fetchSize より小さい値とゼロより小さい値は指定できない
    例外:
    SQLException

    populate

    void populate(ResultSet rs,
                  int startRow)
                  throws SQLException
    この CachedRowSet オブジェクトに指定された ResultSetオブジェクトのデータを読み込みます。populate(ResultSet)メソッドに関連付けられている場合、追加パラメータにより、CashedRowSet インスタンスの読み込みを開始する ResultSet内の開始位置を指定することができます。  

    このメソッドは、アプリケーションがオープンしている ResultSet オブジェクトに接続しているとき execute メソッドの代替として使用できます。新しい接続を開いてこの CachedRowSetオブジェクトのコマンドを再実行する必要がない点で、populate メソッドは、パラメータを取らない executeメソッドよりも効率的です。また、populate メソッドを使用することは、ResultSetオブジェクトを取る execute メソッドよりも便利です。

    パラメータ:
    startRow - この CachedRowSet へのレコードの読み込みを開始する、 ResultSet 内の位置
    rs - この CachedRowSet オブジェクトに読み込まれる データを含む ResultSet オブジェクト
    例外:
    SQLException - null の ResultSet オブジェクトが提供された場合、 またはこの CachedRowSet オブジェクトが 関連する ResultSetMetaData オブジェクトを取得できない場合
    関連項目:
    execute(java.sql.Connection), populate(ResultSet), ResultSet, ResultSetMetaData

    setPageSize

    void setPageSize(int size)
                     throws SQLException
    CachedRowSet オブジェクトのページサイズを設定します。CachedRowSetは、自身をページサイズで設定された行数の行に読み込む設定にできます。populate()または execute()が呼び出されると、CachedRowSetは、RowSet の読み込み使用した元の SQLクエリーに従って、追加ページをフェッチします。

    パラメータ:
    size - CachedRowSetのページサイズ
    例外:
    SQLException - CachedRowSet ページサイズの設定時にエラーが発生した場合、 またはページサイズがゼロより小さい場合

    getPageSize

    int getPageSize()
    CachedRowSet オブジェクトのページサイズを返します。

    戻り値:
    ページサイズを表す int

    nextPage

    boolean nextPage()
                     throws SQLException
    CachedRowSet の現在のページを増分します。これにより、CachedRowSet実装は、次のページサイズ分の行をフェッチし、RowSet に読み込みます。 ただし、このためには、その他の行が RowSetの読み込みに使用された元の SQL クエリーのスコープ内に残っていなければなりません。

    戻り値:
    まだページがある場合は true、これが最後のページである場合は false
    例外:
    SQLException - 次のページのフェッチ時にエラーが発生した場合、 またはこのメソッドが populate や execute の実行前に早く呼び出されすぎた場合

    previousPage

    boolean previousPage()
                         throws SQLException
    CachedRowSet の現在のページを減分します。これにより、CachedRowSet実装は、以前のページサイズ分の行をフェッチし、RowSet に読み込みます。以前のページ内の返された行の量は、RowSetの読み込みに使用された元の SQL クエリーのスコープ内に残っている必要があります。

    戻り値:
    前のページが正常に取得された場合は true、 これが最初のページである場合は false
    例外:
    SQLException - 以前のページのフェッチ時にエラーが発生した場合、 またはこのメソッドが populate や execute の実行前に早く呼び出されすぎた場合

    JavaTM Platform
    Standard Ed. 6

    バグの報告と機能のリクエスト
    さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

    Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。