|
|
 |
連載
JDBC
レコードの移動 |
|
1.カーソルとスクロール
ResultSetオブジェクトに格納された結果セットは行の集合ですから、これを行単位で扱うには「カーソル」で現在の行位置を表現しなければなりません。
カーソルを移動させるということは、結果セットの先頭から行単位に読み込む位置を移動させるということになります。
(SQLでは結果セットから行を取り出すことをフェッチ (FETCH) と呼んでいます。)
JDBC2.0からカーソルは前向きだけでなく後ろ向きにも移動することが可能になりました。
このカーソルを順方向、逆方向に自由に動かすことをスクロールといい、これらの設定を変更するには Statementオブジェクトを作成するときの createStatementメソッドの引数で指定します。
デフォルトではカーソルは順方向のみ移動させることが出来ます。
この引数の説明は「結果セットの可視性」でまとめて説明しますで、そちらを参照して下さい。
|
2.レコードの構造
| 先頭行の前の行 (beforeFirst) | | 先頭行 (first) | | 2行目 |
| 3行目 | | 4行目 | | 最終行 (last) | | 最終行の後の行 (afterLast) |
|
問い合わせ結果を受け取った時は、「先頭行の前の行(before first)」という特別な位置にいます。
nextメソッドで次の行に移動した後、実際の先頭行に位置付けされ、「最終行の後の行 (afterLast)」という特別な位置に達した時に falseを返します。
while (rs.next()) {・・・}
(データを取り込んでからnext()ではありません。)
|
|
| |
3.絶対位置と相対位置
スクロール可能な結果セットでは、行の絶対位置および相対位置を指定することにより、カーソルを自由に位置付けすることが可能です。
絶対位置の指定は absoluteメソッドで行番号を指定し、最初の行が行 1、2 番目が行 2、などとします。
指定された行番号が負の値の場合は、カーソルは結果セットの最終行に対する絶対行位置に移動します。
例えば、absolute(-1) とすると、カーソルは最終行に移動し、absolute(-2) を呼び出すと、カーソルは最終行の前の行に移動します。
相対位置の指定は relativeメソッドで現在位置からの相対番号を指定することにより、順方向、逆方向にカーソル移動できます。
共に存在しない行番号を指定した場合は例外が発生します。行番号は 1 からに注意して下さい。
|
|
| |
 |
|