データの登録

2.3 データの登録

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

2.3.1 JDBCを利用したデータ登録の基本構文

 MySQLデータベースからデータを更新するには、以下の手順を行う必要があります。

 ① JDBC(java.sqlパッケージ)をインポートする。
   例)import java.sql.*;
 ② JDBCドライバを読み込む。
   例)Class.forName(ドライバ名);
 ③ データベースへ接続する。
   例)Connection con = DriverManager.getConnection(URL,ユーザ名,パスワード);

 ④ SQL文(INSERT文)をデータベースに送るための準備を行う。

Statement smt = con.createStatement();

 ⑤ SQL文(INSERT文)をデータベースへ送信し、追加された行数を結果として受け取る。

int rowsCount = smt.executeUpdate(INSERT文);

 上記手順の内、①から③までがデータベース接続、④がSQL送信のための準備になっていて、前節までで学習した処理と全く同じです。
 ⑤の処理では、executeUpdate()メソッドを利用してINSERT文を送信します。2.1節で前述したように、JDBCではSQL文を実行する場合、参照系の処理(SELECT文)を実行するexecuteQuery ()メソッドと、更新系の処理(INSERT、UPDATE、DELETE文)を実行するexecuteUpdate()メソッドの2つがあります。登録 (更新系) 処理を行いたい場合は、間違えずにexecuteUpdate()メソッドを利用する必要があります。


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

データの登録を行うプログラム

 このプログラムは、データベースへ接続し、データを登録し登録された件数を表示するプログラムです。

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

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

import java.sql.*;

public class SampleInsert {

	//接続用の情報をフィールドに定数として定義
	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 = "INSERT INTO bookinfo(isbn,title,price) VALUES('00006','Strutsテキスト',2000)";
 			int rowsCount = smt.executeUpdate(sql);
 
 			System.out.print(rowsCount + "レコード登録しました。");
 
 			smt.close();
 			con.close();
 
 		}catch (Exception e) {
 			System.out.println("JDBCデータベース接続エラー");
 		}
 	}
 }

実行結果

解説

 17行目までの処理は、データベース接続情報の定義やデータベースへの接続処理、データベース操作のための準備部分にあたり、前節までで学習したプログラムと同様の処理になっています。

 今回のプログラムではデータを登録を行うため、18行目でINSERT文を作成しています。SQL文が違うだけでMySQLに実行させるSQL文を文字列として作成するという点については、検索を行うプログラム変わりありません。
   18: String sql = "INSERT INTO bookinfo(isbn,title,price) VALUES('00006','Strutsテキスト',2000)";

 19行目ではexecuteUpdate()メソッドを利用し、18行目で作成したINSERT文をMySQLデータベースへ送信しています。executeUpdate()メソッドはexecuteQuery()メソッドとは異なり、戻り値として処理件数をint型の値で返します。
   19: int rowsCount = smt.executeUpdate(sql);

 21行目ではexecuteUpdate()メソッドから受け取った処理件数をprintln()メソッドを利用して表示しています。
   21: System.out.print(rowsCount + "レコード登録しました。");

 今回のプログラムでは「登録された件数が1件」という情報のみ表示されるため、データが正しく登録されたかどうか確認することができません。データを確認したい場合は、2.2節で作成したプログラム「SimpleSelec.java」を実行しデータを確認してみてください。

図 2.3.1 SampleInsert実行後のSampleSelectの実行画面

 isbnが「00006」のデータが確認できれば、正しく登録処理が行われたことになります。

2回目以降のプログラムの実行

 「SimpleInsert.java」では登録するisbnの情報が固定値でプログラム上に記述しています。isbnは重複したデータが登録できない仕様のため、1度目の実行では実行結果画面と同じ表示が行われますが、2度目以降はエラーメッセージが表示されることになります。

 再度、登録できるようにするためには、コマンドプロンプトからisbnが「00006」のデータを削除するか、プログラム内のSQL文のisbnを、登録されていない番号に変更しプログラムを実行してください。

ポイント
  • データを登録する場合、executeUpdate ()メソッドを使用する。
  • executeUpdate ()メソッドの引数にINSERT文を渡すと登録処理が実行される。
  • executeUpdate ()メソッドでINSERT文を実行した場合、追加された行数が戻り値となる。

NEXT>> 2.4 データの更新