データの更新

2.4 データの更新

 本節では、JDBCを利用してJavaプログラムからMySQLデータベースへ接続し、データを更新する方法について学習します。

2.4.1 JDBCを利用したデータ更新の基本構文

 MySQLデータベースからデータを更新する場合、処理の流れは登録処理と同じ流れになります。

 ① JDBC(java.sqlパッケージ)をインポートする。
 ② JDBCドライバを読み込む。
 ③ データベースへ接続する。
 ④ SQL文(UPDATE文)をデータベースに送るための準備を行う。
 ⑤ SQL文(UPDATE文)をデータベースへ送信し、更新された行数を結果として受け取る。

int rowsCount = smt.executeUpdate(UPDATE文);

 登録処理と異なる点はデータベースへ送信するSQL文が違うという1点のみになります。
 データの更新を行うには、executeUpdate()メソッドの引数にUPDATE文を記述します。

 では実際にデータの更新を行うプログラムを作成してみましょう。

データの更新を行うプログラム

 このプログラムは、データベースのデータを更新し、更新された件数を表示するプログラムです。

① ソース・フォルダー      :myjdbc_kanda/src
② パッケージ          :jp.co.f1.jdbc.ch02
③ 名前             :SampleUpdate
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる

➢ SampleUpdate.java
package jp.co.f1.jdbc.ch02;

import java.sql.*;

public class SampleUpdate {

	//接続用の情報をフィールドに定数として定義
	private static String RDB_DRIVE="com.mysql.jdbc.Driver";
	private static String URL="jdbc:mysql://localhost/mybookdb";
 	private static String USER="bms";
 	private static String PASSWD="bms123";
 
 	public static void main(String[] args) {
 		try{
 			Class.forName(RDB_DRIVE);
 			Connection con = DriverManager.getConnection(URL,USER,PASSWD);
 			Statement  smt = con.createStatement();
 			String sql = "UPDATE bookinfo SET title= 'Object-Cテキスト' WHERE isbn = '00006'";
 			int rowsCount = smt.executeUpdate(sql);
 			System.out.print(rowsCount + "レコード変更しました。");
 
 			smt.close();
 			con.close();
 
 		}catch (Exception e) {
 			System.out.println("JDBCデータベース接続エラー");
 		}
 	}
 }

実行結果

解説

 このプログラムは2.2節で学習した登録処理のプログラムとほとんど同じ内容になっています。
 登録処理と異なる点は、18行目で定義しているSQL文(UPDATE文)です。
   18: String sql = "UPDATE bookinfo SET title= 'Object-Cテキスト' WHERE isbn = '00006'"

 19行目のexecuteUpdate()メソッドは引数に受け取った更新系のSQL文を実行します。そのため、SQL文を変更することで登録と同じ記述で更新処理も実行することが可能です。
   19: int rowsCount = smt.executeUpdate(sql);

 実行結果は、登録処理のプログラムと同様に「更新された件数が1件」という情報のみ表示されます。
データが正しく更新されたかどうか確認する場合には、「SampleSelect.java」プログラムを実行しデータを確認してみてください。

図 2.4.1 SampleUpdate実行後のSampleSelectの実行画面

ポイント
  • データを更新する場合、登録処理と同じexecuteUpdate ()メソッドを使用する。
  • executeUpdate ()メソッドの引数にUPDATE文を渡すと更新処理が実行される。

NEXT>> 2.5 データの削除