JAva resultset戻り行の取得


Oracle JDBC拡張を含むJDBCを使用する場合、ResultSetまたはRowSetを使用して、クエリによって返されるローの数を直接的(標準的)に取得する方法はありません.しかし、わずか数行のコードで使用できます. Scrollable ResultSet または Cached RowSet に表示されます.以下に、使用可能な異なる方法の詳細を示します.
  • 実際のクエリの前に実行する方法 "SELECT COUNT(*)...".これは、データベース・エンジンが同じデータを2回分析する必要があることを意味します(1回はカウントに使用され、1回はデータ自体に使用されます). 
  • 第2の方法はJDBC 2.0を使用する.
  • 使用 Scrollable ResultSet
  • 別の使用方法 Cached RowSet 通常(スクロール不可)ResultSetとの組み合わせ.


  • JDBCメソッドでは、すべてのローをスキャンしたり、個別のローを実行したりすることなく、クエリーのロー数を取得できます. SELECT COUNT(*).移動先 Scrolable ResultSet/Cached RowSetの末尾を取得し、その位置を取得します(resultset.last()/cachedRowset.last() およびresultset.getRow()/cachedRowset.getRow()を使用すると、必要な作業を完了できます.RowSetはResultSetインタフェースを拡張しているので、スクロール可能ではなく通常のResultSetを使用することができます.Scrolable ResultSetの使用方法の説明:
  • ResultSetが非常に大きい場合、 resultset.last() サーバ側のより多くのリソースが使用されるため、非常に時間のかかる操作になる可能性があります.したがって、スクロール可能な結果セットが確実に必要でない限り、この方法は避けなければならない.
  • Oracle JDBCドライバで使用 resultset.getRow() 正しいカウントを返します.ただし、他のベンダーの実装方法はresultset.getRow() ゼロを返します.
  • stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
    
    rs.last(); 
    
    
    int rowcount = rs.getRow(); 
    

     
     
    Oracle JDBC Cached RowSetの使用
    OracleCachedRowSet ocrs = new OracleCachedRowSet();
    
    ocrs.populate(rs);
    
    ocrs.last(); 
    
    int rowcount = ocrs.getRow();
    
    if (ocrs != null) 
      ocrs.close();