멋쟁이v의 개발일지

[JSP] select, update, delete 쿼리 실행 결과 사용 및 응용(수정, 삭제) 본문

0년차/JAVA

[JSP] select, update, delete 쿼리 실행 결과 사용 및 응용(수정, 삭제)

멋쟁이v 2023. 4. 23. 16:24
728x90
320x100

[목차]


01. select 쿼리로 회원 수정 화면

💡
1️⃣ 수정버튼 클릭 시 해당 회원의 아이디를 불러온다. <jdbc 프로그램 실행>

2️⃣ 객체 생성 단계에서 select 쿼리 사용 (SELECT 컬럼명 FROM 테이블명 WHERE 조건)

3️⃣ 불러온 회원 아이디를 쿼리에 넣어준다.

4️⃣ 쿼리 실행 후 실행결과를 사용한다.

5️⃣ 수정화면 폼을 만들고 value값에 쿼리 실행 결과를 넣어준다.

  • [코드예제] user_update_form.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <%@ page import = "java.sql.DriverManager" %>
    <%@ page import = "java.sql.Connection" %>
    <%@ page import = "java.sql.PreparedStatement" %>
    <%@ page import = "java.sql.ResultSet" %>
    <%@ page import = "java.sql.SQLException" %>
    
    <%
    	String send_id = request.getParameter("send_id");
    
    	String dbid = null;
    	String dbpw = null;
    	String dblevel = null;
    	String dbname = null;
    	String dbemail = null;
    	
    	Connection conn = null;
    	PreparedStatement pstmt = null;
    	ResultSet rs = null;
    	
    	// 1단계 : 드라이버 로딩
    	Class.forName("com.mysql.jdbc.Driver");
    	
    	try {
    		
    		// 2단계 : DB연결
    		String jdbcDriver = "jdbc:mysql://localhost:3306/dbhooni?" + 
    					"useUnicode=true&characterEncoding=euckr";
    		String dbUser = "idhooni";
    		String dbPass = "pwhooni";
    		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
    		
    		// 3단계 : 쿼리 실행을 위한 객체 생성
    		pstmt = conn.prepareStatement("SELECT * FROM tb_user WHERE u_id=?");
    		pstmt.setString(1, send_id);
    		
    		// 4단계 : 쿼리 실행
    		rs = pstmt.executeQuery();
    		
    		// 5단계 : 쿼리 실행결과 사용
    		while(rs.next()) {
    			dbid = rs.getString("u_id");
    			dbpw = rs.getString("u_pw");
    			dblevel = rs.getString("u_level");
    			dbname = rs.getString("u_name");
    			dbemail = rs.getString("u_email");
    		}
    		
    	} catch(SQLException ex) {
    		out.println(ex.getMessage());
    		ex.printStackTrace();
    	} finally {
    		// 6. 사용한 Statement 종료
    		if (rs != null) try { rs.close(); } catch(SQLException ex) {}
    		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
    		
    		// 7. 커넥션 종료
    		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
    	}
    	
    %>
    
    <h2>수정화면</h2>
    <form action="<%= request.getContextPath() %>/userupdate/user_update_action.jsp" method="post">
    	<table border="1">
    		<tr>
    			<td>아이디</td>
    			<td><input type="text" name="u_id" value="<%= dbid %>" readonly></td>
    		</tr>
    		<tr>
    			<td>비밀번호</td>
    			<td><input type="text" name="u_pw" value="<%= dbpw %>"></td>
    		</tr>
    		<tr>
    			<td>권한</td>
    			<td><input type="text" name="u_level" value="<%= dblevel %>"></td>
    		</tr>
    		<tr>
    			<td>이름</td>
    			<td><input type="text" name="u_name" value="<%= dbname %>"></td>
    		</tr>
    		<tr>
    			<td>이메일</td>
    			<td><input type="text" name="u_email" value="<%= dbemail %>"></td>
    		</tr>
    		<tr>
    			<td colspan="2"><input type="submit" value="수정버튼"></td>
    		</tr>
    	</table>
    </form>

02. update 쿼리로 회원 수정 처리

💡
1️⃣ 수정 화면 폼에서 데이터 값을 받아온다. <jdbc 프로그램 실행>

2️⃣ 객체 생성 단계에서 update 쿼리 사용 (UPDATE 테이블명 SET 컬럼명=”값” WHERE 조건)

3️⃣ 받아온 데이터 값을 쿼리에 넣어준다.

4️⃣ 쿼리 실행 (실행결과 사용 생략)

  • [코드예제] user_update_action.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <%@ page import = "java.sql.DriverManager" %>
    <%@ page import = "java.sql.Connection" %>
    <%@ page import = "java.sql.PreparedStatement" %>
    <%@ page import = "java.sql.SQLException" %>
    
    <%
    	request.setCharacterEncoding("euc-kr");
    	String id = request.getParameter("u_id");
    	String pw = request.getParameter("u_pw");
    	String level = request.getParameter("u_level");
    	String name = request.getParameter("u_name");
    	String email = request.getParameter("u_email");
    
    	// 1단계 : 드라이버 로딩
    	Class.forName("com.mysql.jdbc.Driver");
    	
    	Connection conn = null;
    	PreparedStatement pstmt = null;
    	
    	try {
    		
    	// 2단계 : DB연결
    	String jdbcDriver = "jdbc:mysql://localhost:3306/dbhooni?" + 
    				"useUnicode=true&characterEncoding=euckr";
    	String dbUser = "idhooni";
    	String dbPass = "pwhooni";
    	conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
    	
    	// 3단계 : 쿼리 실행을 위한 객체 생성
    	pstmt = conn.prepareStatement("UPDATE tb_user SET u_pw=?, u_level=?, u_name=?, u_email=? WHERE u_id=?");
    	pstmt.setString(1, pw);
    	pstmt.setString(2, level);
    	pstmt.setString(3, name);
    	pstmt.setString(4, email);
    	pstmt.setString(5, id);
    	System.out.println(pstmt);
    	
    	// 4단계 : 쿼리 실행 (1이 출력되면 정상)
    	int result = pstmt.executeUpdate();
    	System.out.println(result);
    	
    	// 5단계 : 쿼리 실행 결과 사용(생략가능)
    	
    } catch(SQLException ex) {
    	out.println(ex.getMessage());
    	ex.printStackTrace();
    } finally {
    	// 6. 사용한 Statement 종료
    	if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
    	
    	// 7. 커넥션 종료
    	if (conn != null) try { conn.close(); } catch(SQLException ex) {}
    }
    	
    %>

03. delete 쿼리로 회원 삭제 처리

💡
1️⃣ 삭제버튼 클릭 시 해당 회원의 아이디를 불러온다. <jdbc 프로그램 실행>

2️⃣ 객체 생성 단계에서 delete 쿼리 사용 (DELETE FROM 테이블명 WHERE 조건)

3️⃣ 불러온 회원 아이디를 쿼리에 넣어준다.

4️⃣ 쿼리 실행 (실행결과 사용 생략)

  • [코드예제] user_delete_action.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    
    <%@ page import = "java.sql.DriverManager" %>
    <%@ page import = "java.sql.Connection" %>
    <%@ page import = "java.sql.PreparedStatement" %>
    <%@ page import = "java.sql.SQLException" %>
    
    <%
    
    	String send_id = request.getParameter("send_id");
    
    	//1단계 : 드라이버 로딩
    	Class.forName("com.mysql.jdbc.Driver");
    	
    	Connection conn = null;
    	PreparedStatement pstmt = null;
    	
    	try {
    		
    	// 2단계 : DB연결
    	String jdbcDriver = "jdbc:mysql://localhost:3306/dbhooni?" + 
    				"useUnicode=true&characterEncoding=euckr";
    	String dbUser = "idhooni";
    	String dbPass = "pwhooni";
    	conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
    	
    	// 3단계 : 쿼리 실행을 위한 객체 생성
    	pstmt = conn.prepareStatement("DELETE FROM tb_user WHERE u_id=?");
    	pstmt.setString(1, send_id);
    	System.out.println(pstmt);
    	
    	// 4단계 : 쿼리 실행 (1이 출력되면 정상)
    		int result = pstmt.executeUpdate();
    		System.out.println(result);
    		
    	// 5단계 : 쿼리 실행 결과 사용(생략가능)
    		
    	} catch(SQLException ex) {
    		out.println(ex.getMessage());
    		ex.printStackTrace();
    	} finally {
    		// 6. 사용한 Statement 종료
    		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
    		
    		// 7. 커넥션 종료
    		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
    	}
    		
    %>


tag : #mysql #DB #select #update #delete #쿼리 #객체


Uploaded by N2T

728x90
320x100
Comments