Hitachi

Hitachi Advanced Data Binder AP開発ガイド


8.6.76 ResultSetインタフェースに関する注意事項

〈この項の構成〉

(1) getXXXメソッドによる値の取得

(2) データマッピング(変換)

検索データ取得時に使用するgetXXXメソッドによってマッピングできるかどうかについては,「7.6.1 データ型のマッピング」の「(2) 検索データ取得時のマッピング」を参照してください。マッピングできないJDBCのSQLデータ型に対してgetXXXメソッドが呼び出された場合,SQLExceptionが投入されます。

(3) 結果セットタイプがResultSet.TYPE_SCROLL_INSENSITIVE,またはResultSet.TYPE_SCROLL_SENSITIVEの場合のメモリ使用量

結果セットタイプがResultSet.TYPE_SCROLL_INSENSITIVEまたはResultSet.TYPE_SCROLL_SENSITIVEのときに,ResultSetインタフェースの次に示すメソッドを実行すると,検索結果蓄積用のメモリをJDBCドライバが確保します。

JDBCドライバは,検索結果中の値ごとにメモリオブジェクトを割り当てて蓄積します。値が可変長である場合,メモリオブジェクトは検索データの実サイズに合わせた大きさとなります。

(4) next,absolute,relative,last,およびafterLastメソッド

nextメソッドを実行すると,JDBCドライバは次の表に示すようにデータベースからデータを取得,蓄積します。

表8‒44 nextメソッド実行時の,データベースからのデータの取得,蓄積

状態

結果セットタイプ

ResultSet.TYPE_FORWARD_ONLY

ResultSet.TYPE_SCROLL_INSENSITIVE,

またはResultSet.TYPE_SCROLL_SENSITIVE

nextメソッドで移動した現在行のデータをJDBCドライバ内に読み込んでいない

遷移した現在行を接続先のデータベースから取得します。

遷移した現在行をデータベースから取得し,JDBCドライバのメモリに読み込み,蓄積します。

nextメソッドで移動した現在行のデータをJDBCドライバ内に読み込んでいる

データベースからデータを取得しません。

absoluterelativelast,およびafterLastメソッドを実行すると,JDBCドライバは次の表に示すようにデータベースからデータを取得,蓄積します。

表8‒45 absolute,relative,last,およびafterLastメソッド実行時の,データベースからのデータの取得,蓄積

状態

結果セットタイプが

ResultSet.TYPE_SCROLL_INSENSITIVE,

またはResultSet.TYPE_SCROLL_SENSITIVE

検索結果の先頭行から指定行までに,JDBCドライバが読み込んでいないデータがある

読み込んでいない行をデータベースから取得し,JDBCドライバのメモリに蓄積します。

検索結果の先頭行から指定行まで,JDBCドライバはデータを読み込んでいる

データベースからデータを取得しません。

結果セットタイプがResultSet.TYPE_FORWARD_ONLYの場合,SQLExceptionが投入されます。

注※

lastメソッドおよびafterLastメソッドの場合,先頭行から最終行になります。

(5) getAsciiStreamおよびgetCharacterStreamメソッドに関する注意事項

getAsciiStreamおよびgetCharacterStreamメソッドによって返却されたオブジェクトは,JDBCドライバが暗黙的にクローズすることはありません。メソッドの呼び出し側でcloseメソッドを実行してください。

(6) 検索結果行数の上限

ResultSetオブジェクトがHADBサーバから取得できる検索結果の行数を次の表に示します。次の表に示す行以上の検索結果は,JDBCドライバが破棄します。

表8‒46 ResultSetオブジェクトがHADBサーバから取得できる検索結果の行数

ResultSetオブジェクト

結果セットタイプ

ResultSet.TYPE_SCROLL_INSENSITIVE

左記以外

次のメソッドを実行したStatementオブジェクトから生成したResultSetオブジェクト

  • setMaxRows

  • setLargeMaxRows

検索結果行数は,次のメソッドで指定した行数です。

  • setMaxRows

  • setLargeMaxRows

setLargeMaxRowsメソッドでInteger.MAX_VALUEを超える値を指定した場合でも,上限値はInteger.MAX_VALUEです。

検索結果行数は,次のメソッドで指定した行数です。

  • setMaxRows

  • setLargeMaxRows

上記以外のResultSetオブジェクト

上限値はInteger.MAX_VALUEです。

上限はありません。