データの登録
2.3 データの登録
本節では、JDBCを利用してJavaプログラムからMariaDBデータベースへ接続し、データを検索する方法を学習します。
2.3.1 JDBCを利用したデータ登録の基本構文
MariaDBデータベースからデータを更新するには、以下の手順を行う必要があります。
① 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()メソッドを利用する必要があります。
では実際にデータの登録を行うプログラムを作成してみましょう。
データの登録を行うプログラム
このプログラムは、データベースへ接続し、データを登録し登録された件数を表示するプログラムです。
➢ SampleInsert.java① ソース・フォルダー :myjdbc_kanda/src
② パッケージ :jp.co.f1.jdbc.ch02
③ 名前 :SampleInsert
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
package jp.co.f1.jdbc.ch02; import java.sql.*; public class SampleInsert { //接続用の情報をフィールドに定数として定義 private static String RDB_DRIVE="org.mariadb.jdbc.Driver"; private static String URL="jdbc:mariadb://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文が違うだけでMariaDBに実行させるSQL文を文字列として作成するという点については、検索を行うプログラム変わりありません。
19行目ではexecuteUpdate()メソッドを利用し、18行目で作成したINSERT文をMariaDBデータベースへ送信しています。executeUpdate()メソッドはexecuteQuery()メソッドとは異なり、戻り値として処理件数をint型の値で返します。
21行目ではexecuteUpdate()メソッドから受け取った処理件数をprintln()メソッドを利用して表示しています。
今回のプログラムでは「登録された件数が1件」という情報のみ表示されるため、データが正しく登録されたかどうか確認することができません。データを確認したい場合は、2.2節で作成したプログラム「SampleSelect.java」を実行しデータを確認してみてください。
図 2.3.1 SampleInsert実行後のSampleSelectの実行画面
isbnが「00006」のデータが確認できれば、正しく登録処理が行われたことになります。
2回目以降のプログラムの実行「SampleInsert.java」では登録するisbnの情報が固定値でプログラム上に記述しています。isbnは重複したデータが登録できない仕様のため、1度目の実行では実行結果画面と同じ表示が行われますが、2度目以降はエラーメッセージが表示されることになります。
再度、登録できるようにするためには、コマンドプロンプトからisbnが「00006」のデータを削除するか、プログラム内のSQL文のisbnを、登録されていない番号に変更しプログラムを実行してください。
ポイント
- データを登録する場合、executeUpdate ()メソッドを使用する。
- executeUpdate ()メソッドの引数にINSERT文を渡すと登録処理が実行される。
- executeUpdate ()メソッドでINSERT文を実行した場合、追加された行数が戻り値となる。