talosのプログラミング教室

Java Gold合格への道 ~JDBC・更新可能なResultSet~

スポンサーリンク

こんにちは。たろすです。

今回はJDBCにおける更新可能なResultSetについて説明します。

使い方

以下のようなテーブルを使用します。


public class Main {

	public static void main(String[] args) {

		final String URL = "jdbc:mysql://localhost:3306/javagold?characterEncoding=UTF-8";
		final String USER = "****";  // 自身で設定したユーザ名
		final String PASS = "****";  // 自身で設定したパスワード

		try (Connection con = DriverManager.getConnection(URL, USER, PASS);
				Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
				ResultSet rs = st.executeQuery("SELECT * FROM employee")) {
			rs.absolute(4);
			rs.updateString(2, "源田 一郎");
			rs.updateRow();
			System.out.print(rs.getString(1) + " ");
			System.out.print(rs.getString(2) + " ");
			System.out.print(rs.getDate(3) + " ");
			System.out.println(rs.getDate(4) + " ");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
000004 源田 一郎 2022-05-01 1995-01-08 


更新可能なResultSetを使用する場合、createStatementメソッドの第二引数をResultSet.CONCUR_UPDATABLEにする必要があります。

Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);


続いて、更新したいレコードにカーソルを合わせ、update~メソッドで更新するカラム(第一引数)と値(第二引数)を指定します。

最後にupdateRowメソッドを呼ぶことで更新内容をデータベースに反映させます。

rs.absolute(4);
rs.updateString(2, "源田 一郎");
rs.updateRow();


コード実行後のデータベーステーブルは以下のようになっており、反映されていることがわかります。

おわりに

今回はJDBCにおける更新可能なResultSetについて説明しました。