目次へ

5. ResultSetを用いた更新処理

この章では、ResultSetを用いた更新処理について説明します。

5.1. カーソルの種類

「java.sql.Result」の実体は、クエリー文の結果セットを指し示すカーソルです。このカーソルの種類によって「ResultSet」で行える機能が異なってきます。カーソルの種類の指定は、「Connection」から「createStatement」「prepareStatement」を実行する際に行います。

Connection conn=DriverManager.getConnection("jdbc:postgresql:Training",
                                            "postgres","");
Statement statement=conn.createStatement(ResultSet.TYPE_FORWARD,
                                         ResultSet.CONCUR_READ_ONLY);

1つ目の引数はカーソルのタイプを指定します。ここで指定できる引数の値は以下の3つです。

ResultSet.TYPE_FORWARD_ONLY カーソルは最初から最後まで順方向にしか移動できません。
ResultSet.TYPE_SCROLL_INSENSITIVE カーソルは順方向・逆方向いずれにも移動可能です。ただし他による変更を反映しません。
ResultSet.TYPE_SCROLL_SENSITIVE カーソルは順方向・逆方向いずれにも移動可能です。また他による変更も反映します。

この引数は、結果セットの取得の際に使用できるメソッドに影響が出ます。「ResultSet.TYPE_FORWARD_ONLY」の場合、「next()」メソッドしか使用できません。それ以外の場合には、以下のメソッドも使用可能となります。

absolute(int) 引数で指定された行番号に移動します。1行目が1、2行目が2です。負の数の場合には、最終行から逆順に数えた行に移動します。
afterLast() 最終行の1つ後ろに移動します。
beforeFirst() 先頭行の1つ前に移動します。
first() 先頭行に移動します。
last() 最終行に移動します。
previous() 1つ前の行に移動します。
relative(int) 引数で指定された数だけ、カーソルと移動します。1を指定した場合はnext()と、-1を指定した場合はprevious()と同じです。

「createStatement」の2つ目の引数は、変更可能性を指定します。

ResultSet.CONCUR_READ_ONLY カーソルはデータの読み出ししかサポートしません。
ResultSet.CONCUR_UPDATABLE カーソルは変更可能です。カーソルを用いたデータの挿入・変更・削除がサポートされます。

「ResultSet.CONCUR_UPDATABLE」を指定すると、ResultSetを用いた更新処理が可能となります。

「createStatement」で引数を指定しない場合、「ResultSet.TYPE_FORWARD_ONLY」「ResultSet.CONCUR_READ_ONLY」を指定した場合と同じになります。ちなみにPostgreSQLのJDBCドライバは「ResultSet.TYPE_INSENSITIVE」を指定した場合と同じになるので注意してください。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp