[구디아카데미] [IT국비지원] 3주차 정리 5. 웹에서 데이터 수정

띵거니·2023년 4월 21일
0

update를 활용한 데이터 수정


데이터 수정 페이지 코드

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@page import="java.sql.ResultSet"%>
<%
	String currentPage = request.getParameter("currentPage");
	
	// 유요성 코드 추가 -> 분기 -> return
	if (currentPage == null 
		|| request.getParameter("storeNo") == null
		|| currentPage.equals("")
		|| request.getParameter("storeNo").equals("")){
		response.sendRedirect("./storeList.jsp");
		return;
	}
	
	int storeNo = Integer.parseInt(request.getParameter("storeNo"));
	Class.forName("org.mariadb.jdbc.Driver");
	
	java.sql.Connection conn = DriverManager.getConnection(
			"jdbc:mariadb://127.0.0.1:3306/homework0419", "root", "java1234");
	String sql = "select store_no, store_name, store_category, store_address, store_emp_cnt, store_begine, createdate, updatedate from store where store_no = ?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	stmt.setInt(1, storeNo); //stmt의 1번째 ?를 storeNo로 바꾸겠다.
	System.out.println(stmt + " <-- stmt");
	ResultSet rs = stmt.executeQuery();
	
	rs.next();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div>
		<h2>
			<a href="./storeList.jsp?currentPage=<%=currentPage%>">맛집 리스트</a>
		</h2>
	</div>
	<!-- currentPage를 넣은 이유는 action으로 넘어갈때 currentPage 값을 주기 위함 -->
	<form action="./updateStoreAction.jsp?currentPage=<%=currentPage%>" method="post">
		<table>
			<tr>
				<td>
					store_no
				</td>
				<td>
					<input type="number" name="storeNo"
						value="<%=rs.getInt("store_no")%>" readonly="readonly">
				</td>
			</tr>
			<tr>
				<td>
					store_pw
				</td>
				<td>
					<input type="password" name="storePw">
				</td>
			</tr>
			<tr>
				<td>
					store_name
				</td>
				<td>
					<input type="text" name="storeName"
						value="<%=rs.getString("store_name")%>">
				</td>
			</tr>
			<tr>
				<td>
					store_category
				</td>
				<td>
					<!-- 입력된 값에 따라 select 분기 -->
					<select name="storeCategory">
						<%
							if (rs.getString("store_category").equals("일식") ){
						%>
						<option value="<%=rs.getString("store_category")%>"><%=rs.getString("store_category")%></option>
						<option value="한식">한식</option>
						<option value="중식">중식</option>
						<%
							} else if (rs.getString("store_category").equals("중식")){
						%>
						<option value="<%=rs.getString("store_category")%>"><%=rs.getString("store_category")%></option>
						<option value="한식">한식</option>
						<option value="일식">중식</option>
						<%
							} else if (rs.getString("store_category").equals("한식")){
						%>
						<option value="<%=rs.getString("store_category")%>"><%=rs.getString("store_category")%></option>
						<option value="일식">일식</option>
						<option value="중식">중식</option>
						<%
							}
						%>
					</select>
				</td>
			</tr>
			<tr>
				<td>
					store_address
				</td>
				<td>
					<textarea rows="2" cols="80" name="storeAddress"><%=rs.getString("store_address")%></textarea>	
				</td>
			</tr>
			<tr>
				<td>
					store_emp_cnt
				</td>
				<td>
					<input type="number" name="storeEmpCnt"
						value="<%=rs.getInt("store_emp_cnt")%>">
				</td>
			</tr>
			<tr>
				<td>
					store_begine
				</td>
				<td>
					<!-- date value에 날짜 값넣으면 기본으로 뜸 -->
					<input type="date" name="storeBegine"
						value="<%=rs.getString("store_begine")%>">
				</td>
			</tr>
		</table>
		<div>
			<button type="submit">수정</button>
		</div>
	</form>
</body>
</html>

데이터 수정 실행 코드

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%
	request.setCharacterEncoding("utf-8");
	// 요청값 유효성 검사
	
	if(request.getParameter("storeName") == null
			|| request.getParameter("storeName").equals("")) {
		response.sendRedirect("./updateStoreForm.jsp");
		return;
	}

	int storeNo = Integer.parseInt(request.getParameter("storeNo"));
	String storePw = request.getParameter("storePw");
	String storeName = request.getParameter("storeName");
	String storeCategory = request.getParameter("storeCategory");
	String storeAddress = request.getParameter("storeAddress");
	int storeEmpCnt = Integer.parseInt(request.getParameter("storeEmpCnt"));
	String storeBegine = request.getParameter("storeBegine");
	int currentPage = Integer.parseInt(request.getParameter("currentPage"));
	
	Class.forName("org.mariadb.jdbc.Driver");
	Connection conn = DriverManager.getConnection(
			"jdbc:mariadb://127.0.0.1:3306/homework0419","root","java1234");
	String sql = "update store set store_name=?, store_category=?, store_address=?, store_emp_cnt=?, store_begine=?, updatedate=now() where store_no=? and store_pw=?";
	PreparedStatement stmt = conn.prepareStatement(sql);
	stmt.setString(1, storeName);
	stmt.setString(2, storeCategory);
	stmt.setString(3, storeAddress);
	stmt.setInt(4, storeEmpCnt);
	stmt.setString(5, storeBegine);
	stmt.setInt(6, storeNo);
	stmt.setString(7, storePw);
	System.out.println(stmt + " <-- updateStoreAction sql");

	int row = stmt.executeUpdate();
	// 디버깅
	System.out.println(row + " <-- updateStoreAction row");
	
	// 수정 안하고 넘길시 updateStoreForm에 남게함
	if(row == 0) { // 비빌번호 틀려서 삭제행이 0행
		response.sendRedirect("./updateStoreForm.jsp?storeNo=" + storeNo + "&currentPage=" + currentPage);
	} else {
		response.sendRedirect("./storeOne.jsp?storeNo=" + storeNo + "&currentPage=" + currentPage);
	}
%>
profile
발효 중인 국비생

0개의 댓글