8.6.76 ResultSetインタフェースに関する注意事項
- 〈この項の構成〉
(1) getXXXメソッドによる値の取得
-
getXXXメソッドによってマッピングできるかどうかについては,「7.6.1 データ型のマッピング」の「(2) 検索データ取得時のマッピング」を参照してください。
-
getXXXメソッドに指定した列番号または列名称が存在しない場合は,SQLExceptionが投入されます。
-
getXXXメソッドに指定する値が,実際の値を表現できない場合(例:INTEGER型の40,000という値をgetShortで取得する場合),オーバフローによってSQLExceptionが投入されます。オーバフローが発生するおそれがあるgetXXXメソッドとHADBのデータ型の組み合わせについては,「7.6.3 オーバフローが発生したときの処理」を参照してください。
(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ドライバが確保します。
-
ResultSet.nextメソッド
-
ResultSet.lastメソッド
-
ResultSet.absoluteメソッド
-
ResultSet.relativeメソッド
-
ResultSet.afterLastメソッド
JDBCドライバは,検索結果中の値ごとにメモリオブジェクトを割り当てて蓄積します。値が可変長である場合,メモリオブジェクトは検索データの実サイズに合わせた大きさとなります。
(4) next,absolute,relative,last,およびafterLastメソッド
nextメソッドを実行すると,JDBCドライバは次の表に示すようにデータベースからデータを取得,蓄積します。
状態 |
結果セットタイプ |
|
---|---|---|
ResultSet.TYPE_FORWARD_ONLY |
ResultSet.TYPE_SCROLL_INSENSITIVE, またはResultSet.TYPE_SCROLL_SENSITIVE |
|
nextメソッドで移動した現在行のデータをJDBCドライバ内に読み込んでいない |
遷移した現在行を接続先のデータベースから取得します。 |
遷移した現在行をデータベースから取得し,JDBCドライバのメモリに読み込み,蓄積します。 |
nextメソッドで移動した現在行のデータをJDBCドライバ内に読み込んでいる |
データベースからデータを取得しません。 |
absolute,relative,last,およびafterLastメソッドを実行すると,JDBCドライバは次の表に示すようにデータベースからデータを取得,蓄積します。
状態 |
結果セットタイプが 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ドライバが破棄します。
ResultSetオブジェクト |
結果セットタイプ |
|
---|---|---|
ResultSet.TYPE_SCROLL_INSENSITIVE |
左記以外 |
|
次のメソッドを実行したStatementオブジェクトから生成したResultSetオブジェクト
|
検索結果行数は,次のメソッドで指定した行数です。
setLargeMaxRowsメソッドでInteger.MAX_VALUEを超える値を指定した場合でも,上限値はInteger.MAX_VALUEです。 |
検索結果行数は,次のメソッドで指定した行数です。
|
上記以外のResultSetオブジェクト |
上限値はInteger.MAX_VALUEです。 |
上限はありません。 |