簡単なwebアプリケーションをSarvlet/Dao/JSPを使って作成しております。
自分で教科書等、調べながら色々試行錯誤してみたのですが
DBから持ってきたレコードを削除することができません。
また逆にレコードを更新できるようにしたいと考えております。
下記に載せるコードは削除コードです。
全然わかっていないのでわかりにくい部分が多数ですが、すみません。
Dao
1package jp.co.sss.crud.util; 2 3import java.sql.Connection; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.util.ArrayList; 7import java.util.List; 8 9import jp.co.sss.crud.bean.Bean; 10import jp.co.sss.crud.db.DBManager; 11 12public class DeleteDao { 13 14 15 public static List<Bean> delete(String empId){ 16 Connection connection = null; 17 PreparedStatement preparedStatement = null; 18 ResultSet resultSet = null; 19 20 List<Bean> beanList = new ArrayList<>(); 21 22 try{ 23 24 connection = DBManager.getConnection(); 25 26 String sql = "DELETE * FROM employee WHERE emp_id = ? "; 27 28 preparedStatement = connection.prepareStatement(sql); 29 30 preparedStatement.setString(1,empId); 31 32 resultSet = preparedStatement.executeQuery(); 33 34 35 while(resultSet.next()){ 36 Bean empBean = new Bean(); 37 empBean.setEmpId(resultSet.getString("emp_id")); 38 empBean.setEmpName(resultSet.getString("emp_name")); 39 if(resultSet.getInt("gender") == 1){ 40 empBean.setGender("男性"); 41 } else { 42 empBean.setGender("女性"); 43 } 44 45 beanList.add(empBean); 46 } 47 48 } catch (Exception e){ 49 e.printStackTrace(); 50 } finally { 51 DBManager.close(resultSet); 52 DBManager.close(preparedStatement); 53 DBManager.close(connection); 54 } 55 return beanList; 56 } 57 58}
Servlet
1package jp.co.sss.crud.servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13 14import jp.co.sss.crud.bean.Bean; 15import jp.co.sss.crud.util.DeleteDao; 16 17 18@WebServlet("/Delete") 19public class Delete extends HttpServlet { 20 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 22 23 List<Bean> beanList =new ArrayList<>(); 24 25 String seq = request.getParameter("empId"); 26 beanList = DeleteDao.delete(seq); 27 28 request.setAttribute("beanList",beanList); 29 RequestDispatcher dispatcher = 30 request.getRequestDispatcher("/Delete.jsp"); 31 dispatcher.forward(request, response); 32 } 33 34 35 36}
削除できていないと判断された根拠は何でしょう?実行した結果起きた現象を具体的に記載していただけますか? deleteの場合の実行結果の結果セットは「影響を受けた行数(つまり削除できた件数)」だったはずなのでwhileでは回せないと思います。
今は何をしてもweb画面(トップページ的な)削除ボタンをおすと404エラーが出て、登録してあるデータを削除する画面に飛ぶこともできません
404は存在しないページへのアクセスですね。formの送信先の指定やweb.xmlの定義など見直してください。この質問内容だけではそこまで判断できないので、分からなければ、jspやHTML側、xmlの設定部分を質問本文に追記してください。今コメントいただいた起きている現象についても同様に質問本文に追記してください。