5. ResultSetを用いた更新処理
JDBC 5章 ResultSetを用いた更新処理
- 5.1. カーソルの種類
- 5.2. ResultSetを用いたupdate
- 5.3. ResultSetを用いたinsert
- 5.4. ResultSetを用いたdelete
- 5.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」を指定した場合と同じになるので注意してください。