クエリのデータベースは、一連のデータを取得する、JDBC APIは、クエリの結果セットを受け取るために、関連するオブジェクトを提供します。
A、ResultSetの
java.sql.ResultSetインタフェースは、データベースクエリの結果セットを表します。
JDBCは、ResultSetの必要なステートメントを使用して接続を作成するには、次のメソッドを提供します。
- createStatement(int型RSType、int型RSConcurrency)。
- prepareStatement(文字列SQL、int型RSType、int型RSConcurrency)。
- prepareCall(文字列のSQL、int型RSType、int型RSConcurrency)。
RSTypeのResultSetパラメータは、オブジェクトのタイプは、RSConcurrency ResultSetは更新可能または読み取り専用結果セットを指定するために使用される2つの定数のいずれかであることを示します。
1. ResultSetのタイプ
ResultSet.TYPE_FORWARD_ONLYという:カーソルが結果セットのみで前方に移動することができます。
ResultSet.TYPE_SCROLL_INSENSITIVE:前後にスクロールすることができ、カーソルが、結果セットは、データベースの結果セットを作成した後に起こった変化に敏感ではありません。
ResultSet.TYPE_SCROLL_SENSITIVE:カーソルが変化に敏感で、結果セットの作成後に発生するように設定、他のデータベースを結果、前後にスクロールすることができます。
あなたが任意のResultSetのタイプを指定しない場合、デフォルト値はTYPE_FORWARD_ONLYです。
2. ResultSetの同時実行
ResultSet.CONCUR_READ_ONLY読み取り専用の結果セットを作成
ResultSet.CONCUR_UPDATABLEは、更新可能な結果セットを作成
しますが、任意の同時タイプを指定しない場合、デフォルト値はCONCUR_READ_ONLYです。
結果セットを確認してください3。
現在の行のデータ取得方法の多数を含むResultSetインタフェース。
getメソッドを有していてもよく、各データ型は、各getメソッドは、列のインデックス(1から始まる)の使用であり、いずれかが列名を使用して、2つのバージョンを持っています。
注:データベース接続がクローズされたResultSet後(クローズアウト)がオフライン結果行セットの設定に使用するために使用する接続、または必要性の状態のままでなければならない、後に使用することができません。
二、行セット
RowSetインタフェースは、ResultSetインタフェースから継承されました。ResultSetのと比較すると、RowSetのデフォルトスクロール、更新可能な、シリアライズ可能な結果セットが便利なデータの終了を同期させるために、JavaBeanのようにネットワークを介して送信することが可能です。あなたは、メモリのパフォーマンスをより良く利用するデータベースサーバーの負荷を軽減し、プログラムのパフォーマンスを向上させることができるようにRowSetのオフラインの場合、プログラムは、メモリへのRowSetのデータロードを作成するときからなっています。
1.結果セットをオフライン何ですか
直接使用ResultSetの場合、プログラムは、ResultSetのレコードを取得した後、すぐに使用する必要がない、または接続が閉じられた場合、もはやどちらかこの状況を解決するResultSetのJavaBeanストレージに結果を変換し、いずれかの接続がクローズする前にすべての操作を完了するために利用可能であるが、これらのアプローチは非常に便利ではありません。
しかし、行セットをオフラインでこの問題を解決することができました。行セットのResultSet結果セットは、RowSetオブジェクト、メモリ動作に格納されたデータとしてパッケージすることができ、切断接続することができます。データ操作が完了した後まで、データベースに再接続し、データの同期を行うことができます。
メモリ上でその合計アップ、行セットのデータベースのデータを実行することができるオフライン読み取りおよび書き込み操作は、再同期操作では、データベースが完了した後です。
RowSetインタフェースの下JdbcRowSet除くJdbcRowSet、CachedRowSetの、のFilteredRowSet、JoinRowSetの、のWebRowSetを、含まれている、次の4つがRowSetのオフラインになっています。
2. RowSetFactory
あなたがJdbcRowSetを使用したい場合は、JDK1.6の以前のバージョンではと、あなたはJdbcRowSetImpl内部独自のAPIので、将来のバージョンで削除される可能性があり、オブジェクトが、コンパイル時に警告を構築するためにJdbcRowSetImplコンストラクタを使用する必要があります。この買収JdbcRowSetの方法は、内部APIの使用は、将来のバージョンとの互換性がない可能性があるため、推奨されていませんが、そのようなプログラムは、直接JdbcRowSetImpl特定の実装クラスを結合され、メンテナンスやアップグレードを助長されていません。
JDK1.7、RowSetFactoryの導入とRowSetProviderインタフェース、RowSetProvider RowSetFactoryを作成する責任、およびRowSetFactory行セットのインスタンスは、以下の方法で作成することができます。
- createCachedRowSet()
- createFilteredRowSet()
- createJdbcRowSet()
- createJoinRowSet()
- createWebRowSet()
例では、行セットResultSetが、オブジェクトを作成し実行することができる充填着信(SQL)方法はまた、作成後行セットJdbcRowSetインスタンスを埋めるデータによって得ることができます。
// 作成RowSetFactory RowSetFactory RowSetFactory = RowSetProvider.newFactory(); // 指定された行セットを作成する のCachedRowSetのrowSet = rowSetFactory.createCachedRowSet(); // ResultSetのRowSetが入れ rowSet.populate(たresultSet);
3.オフラインクエリのページ
いわゆるページがResultSetのほんの数を記録一度ロードされ、回避のCachedRowSetのメモリフットプリントが大きすぎます。
CachedRowSetのページング制御方法:
- 移入(ResultSetのRS、INT startRow属性)、最初の行startRow属性からローディングを開始します
- setPageSize(int型のpageSize)、各ページのサイズが提供されています
- previousPage();底部でのResultSetの可用性、その前に記録読み出しのCachedRowSetそう
- 下部にNEXTPAGE()ResultSetの可用性、そう次のレコードが読み取られることのCachedRowSet
輸入javax.sql.rowset.CachedRowSet; 輸入javax.sql.rowset.RowSetFactory; 輸入javax.sql.rowset.RowSetProvider; インポート java.sqlの。* ; パブリック クラスのConnectionManager { プライベート 静的な 最終文字列のURL = "はjdbc:mysqlの://192.168.178.5:12345 / cloudDB01" ; プライベート 静的な 最終文字列USER_NAME =「ルート」。 プライベート 静的な 最終文字列PASSWORD =「123456」; 静的{ 試み{ Class.forNameの( "はcom.mysql.jdbc.Driver"); } キャッチ(ClassNotFoundExceptionが電子){ するSystem.out.println( "加载のMySQL数据库驱动失败" )。 } } パブリック 静的 ボイドメイン(文字列[]引数)をスロー例外{ 文字列のSQLを "DEPT SELECT * FROM" = 。 接続の接続 = たDriverManager.getConnection(URL、USER_NAME、PASSWORD)。 PreparedStatementのPSMT = のConnection.prepareStatement(SQL)。 ResultSetたresultSet = psmt.executeQuery()。 RowSetFactory rowSetFactory =RowSetProvider.newFactory(); CachedRowSetのrowSet = rowSetFactory.createCachedRowSet()。 rowSet.setPageSize( 2 )。 rowSet.populate(たresultSet、 2)。// 从第二行开始 一方(rowSet.next()){ System.out.printlnは(rowSet.getString( 2 ))。 } } }
注:CachedRowSetのは、すべてのデータを1回の負荷であるメモリページング、ページングは、物理的ではなく、またあまり開発され、実際に使用していました。