💡

【初心者向け/ITスクール48日】ServerとDB連携(Update/Delete)

2023/09/18に公開

はじめに

今日は、ITスクールに通った48日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。

48日目は、今まで、JDBCとTomcatを連携し、データーをUpdate,Deleteをするす練習しました。
昨日、作成した掲示板サイトをアレンジする感じでした。

https://zenn.dev/eldorado215/articles/a67a81dc03dc3d
https://zenn.dev/eldorado215/articles/402fb7e585c6e4

Read

今回は、テーブルのオブジェクトの詳細情報、つまり、全体テーブルではなく、レコードの情報をREADする連取を行いました。

こちらのページからUPDATE,DELETEも同時に行いました。

appleInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
 	<h1>사과 조회 결과</h1>
 	<form action="AppleInfoController" method="post">
 	지역:<input name="a_location" value="${apple.a_location }" readonly="readonly"><p>
 	색깔:<input name="a_color" value="${apple.a_color }"><p>
 	맛:<input name="a_flavor" value="${apple.a_flavor }"><p>
 	가격:<input name="a_price" value="${apple.a_price }"><p>
 	소개:<textarea name="a_introduce">${apple.a_introduce }</textarea><p>
 	<button>변경</button> 	
 	</form>
 	<button onclick="deleteApple(`${apple.a_location }`);">삭제</button> 
 	<button onclick="history.back();">뒤로 가기</button> 
</div>
</body>
</html>
	
AppleDBManager
 public boolean searchApple(HttpServletRequest request) { 
	  try{
		    
			con=HyonDBManager.connect("hyonPool");
			
			String sql ="select * from sep14_apple where a_location=?";
			
			pstmt = con.prepareStatement(sql);
			
			pstmt.setString(1, request.getParameter("a_location"));
			
			rs = pstmt.executeQuery();
			
			
			while (rs.next()) {
				Apple apple = new Apple(
						 rs.getString("a_location"),
						 rs.getString("a_color"),
						 rs.getString("a_flavor"),
						 rs.getInt("a_price"),
			 			 rs.getString("a_introduce"));
				 
			request.setAttribute("apple", apple);
			return true;
			}	
			return false;	
	  }catch(Exception e){
		  e.printStackTrace();
		  return false;
		}
		finally{
			HyonDBManager.close(con,pstmt,rs);
		}  
  	}

AppleInfoController
@WebServlet("/AppleInfoController")
public class AppleInfoController extends HttpServlet {
       
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(AppleDBManager.getInstance().searchApple(request)){
		request.setAttribute("cp", "apple/appleInfo.jsp");
		}
		else{
		AppleDBManager.getInstance().groupApples(1, request);
		}	
		request.getRequestDispatcher("index.jsp").forward(request, response);
		}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(AppleDBManager.getInstance().updateApple(request)) {
		request.setAttribute("cp", "apple/apple.jsp");
		}
		else{request.setAttribute("cp", "apple/apple.jsp");
		}
		AppleDBManager.getInstance().groupApples(1, request);
		request.getRequestDispatcher("index.jsp").forward(request, response);		
		}
}

Update

  public boolean updateApple(HttpServletRequest request) {
		try{
			request.setCharacterEncoding("UTF-8");
			
			con=HyonDBManager.connect("hyonPool");
			
			String sql = "update sep14_apple set "
					+ "a_color=?, a_flavor=?, a_price=?, a_introduce=? "
	                 + "where a_location =?";
			
			pstmt = con.prepareStatement(sql);
	 		
			String introduce = request.getParameter("a_introduce").replace("\r\n", "<br>");
			
			pstmt.setString(1,request.getParameter("a_color"));
			pstmt.setString(2,request.getParameter("a_flavor"));
			pstmt.setInt(3,Integer.parseInt(request.getParameter("a_price")));
			pstmt.setString(4,introduce);
			pstmt.setString(5,request.getParameter("a_location"));
			
			if(pstmt.executeUpdate()==1) {
				request.setAttribute("r", "[수정 성공]");
				return true;
			}else {
				request.setAttribute("r", "[수정 실패]");
				return false;
			}
		}catch(Exception e){
		   e.printStackTrace();
			request.setAttribute("r", "[수정 실패]");
			return false;
		}
		finally{
			HyonDBManager.close(con,pstmt,null);
		}
	  }

既存でPrimary keyにしたa_locationはread onlyにし、inputのvalueタグからデーターをもらったため、すぐ修正することができました。



Delete



function deleteApple(loc){

	location.href="AppleDeleteController?a_location=" + encodeURI(loc);
	}

なぜか、昨日までできたTomcatがおかしくなったのです!
以上です!

Discussion