データの削除
13.6 データの削除
本節ではWebアプリケーションからJDBCを利用し、MariaDBデータベースに登録されたデータを削除する方法について学習します。
データを削除するプログラム
入力フォームから必要な情報を入力し、その情報をデータベースから削除します。
実行結果

アプリケーション構成

① ソース・フォルダ :web_basic/src/main/java
② パッケージ :ch13
③ 名前 :AccountDao6
➢ AccountDao6.java
3 | import java.sql.Connection; |
4 | import java.sql.DriverManager; |
5 | import java.sql.SQLException; |
6 | import java.sql.Statement; |
8 | public class AccountDao6 { |
10 | //接続用の情報をフィールドに定数として定義 |
11 | private static String RDB_DRIVE = "org.mariadb.jdbc.Driver"; |
12 | private static String URL = "jdbc:mariadb://localhost/accountdb"; |
13 | private static String USER = "root"; |
14 | private static String PASS = "root123"; |
17 | public static Connection getConnection(){ |
19 | Class.forName(RDB_DRIVE); |
20 | Connection con = DriverManager.getConnection(URL, USER, PASS); |
23 | throw new IllegalStateException(e); |
28 | public int delete(String id){ |
30 | Connection con = null; |
37 | String sql = "DELETE FROM account WHERE id = '" + id + "'"; |
40 | con = getConnection(); |
41 | smt = con.createStatement(); |
44 | count = smt.executeUpdate(sql); |
47 | throw new IllegalStateException(e); |
51 | try{smt.close();}catch(SQLException ignore){} |
54 | try{con.close();}catch(SQLException ignore){} |
① 親フォルダの入力または選択 :web_basic/src/main/webapp/view/ch13
② ファイル名 :deleteForm.jsp
③ アクセスURL :http://localhost:8080/web_basic/view/ch13/deleteForm.jsp
➢ deleteForm.jsp
1 | <%@page contentType="text/html; charset=UTF-8"%> |
5 | < title >データを削除する</ title > |
8 | < div style = "text-align:center" > |
9 | < h2 style = "text-align:center" >削除ID入力画面</ h2 > |
10 | < hr style = "height:3; background-color:#0000ff" /> |
13 | < form action="<%=request.getContextPath() %>/DeleteServlet"> |
14 | < input type = "text" name = "id" > |
15 | < input type = "submit" value = "削除" > |
① ソース・フォルダ :web_basic/src/main/java
② パッケージ :ch13
③ 名前 :DeleteServlet
④ スーパークラス :jakarta.servlet.http.HttpServlet
⑤ アクセスURL :deleteForm.jspからの画面遷移でアクセスされる
➢ DeleteServlet.java
3 | import java.io.IOException; |
5 | import jakarta.servlet.ServletException; |
6 | import jakarta.servlet.annotation.WebServlet; |
7 | import jakarta.servlet.http.HttpServlet; |
8 | import jakarta.servlet.http.HttpServletRequest; |
9 | import jakarta.servlet.http.HttpServletResponse; |
11 | @WebServlet("/DeleteServlet") |
12 | public class DeleteServlet extends HttpServlet{ |
13 | public void doGet(HttpServletRequest request ,HttpServletResponse response) |
14 | throws ServletException ,IOException{ |
20 | String id = request.getParameter("id"); |
23 | AccountDao6 objDao6 = new AccountDao6(); |
26 | int count = objDao6.delete(id); |
29 | request.setAttribute("count", count); |
31 | }catch (IllegalStateException e) { |
32 | error ="DB接続エラーの為、削除できませんでした。"; |
35 | error ="予期せぬエラーが発生しました。< br >"+e; |
38 | request.setAttribute("error", error); |
39 | request.getRequestDispatcher("/view/ch13/deleteReceipt.jsp").forward(request, response); |
① 親フォルダの入力または選択 :web_basic/src/main/webapp/view/ch13
② ファイル名 :deleteReceipt.jsp
③ アクセスURL :DeleteServlet.javaからの画面遷移でアクセスされる
➢ deleteReceipt.jsp
1 | <%@page contentType="text/html; charset=UTF-8"%> |
4 | Integer count = (Integer)request.getAttribute("count"); |
5 | String error = (String)request.getAttribute("error"); |
10 | < title >データを削除する</ title > |
13 | < div style = "text-align:center" > |
14 | < h2 style = "text-align:center" >削除結果画面</ h2 > |
15 | < hr style = "height:3; background-color:#0000ff" /> |
18 | <% if(count != null){ %> |
19 | <%= count%>件のデータを削除しました。 |
解説
今回のデータを削除するプログラムも、13.4節のデータを登録するプログラムや13.5節のデータを更新するプログラムと同様の動きを行っており、異なるのは、情報を入力する画面と表示する画面のレイアウトと、DAOクラスに定義されたメソッドの2点です。
DAOクラスでは、引数に受け取った情報をもとにデータを削除するdelete()メソッドが定義されています。このdelete()メソッドをDeleteServlet.javaで利用することによって、データベースに登録されたデータの削除を行っています。なお、登録や更新と異なり、削除に必要な情報は主キーのIDのみとなります。
26:int count = objDao6.delete(id);
insert()メソッドやupdate ()メソッドと同様に、delete()メソッドも削除件数が戻り値として定義されており、戻り値として受け取った削除件数を29行目でリクエストスコープへ登録しています。
29:request.setAttribute("count", count);
登録された削除件数はdeleteReceipt.jspで取得され、画面へ表示されます。
19:<%= count%>件のデータを削除しました。
この削除プログラムも、結果画面には削除件数のみが表示されます。データが正しく更新されたかどうかを確認する場合は、13.3.1項で作成した一覧を表示するプログラムを実行してください。

図 13.6.1 データ削除後の一覧表示
このように、JDBCを利用することでWebアプリケーションからでも簡単にデータベースの操作を行うことができます。
NEXT>> 13.7 本章のまとめ