본문 바로가기

웹 개발

css,bootstrap사용해서 게시판만들기(4)

728x90

게시판을 삭제하는 부분을 만들었다.

 

게시판을 삭제하기 전에 해당하는 게시글 NO의 댓글의 DB가  먼저 삭제되야한다.

해당 댓글의 row들이 삭제된 후 에 게시판이 작성되도록 만들었다.

 

deleteBoardAction.jsp

<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%
	// post 인코딩 설정
	request.setCharacterEncoding("utf-8");
	// 요청 값
	int no = Integer.parseInt(request.getParameter("no")); 
	
	System.out.println("deleteBoardAction - no = " + no);

	Class.forName("org.mariadb.jdbc.Driver");
	
	// DB자원 초기화
	Connection conn = null;
	conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3307/board","root","****");
	
	/*
		삭제될 댓글의 개수(행) 구하기
		SELECT count(*)
		FROM comment
		WHERE boardno = ?
	*/
	String sql1 = "SELECT count(*) FROM comment WHERE boardno = ?";
	PreparedStatement stmt1 = null;
	stmt1 = conn.prepareStatement(sql1);
	stmt1.setInt(1, no);
	ResultSet rs = stmt1.executeQuery();
	int row1 = 0;
	
	if(rs.next()) {
		row1 = rs.getInt("count(*)");
	}
	
	
	System.out.println("deleteBoardAction - stmt1 = " + stmt1);
	System.out.println("deleteBoardAction - row1 = " + row1);
		
	/*
		글(부모)과 댓글(자식)을 모두 삭제해야 함
		
		댓글(자식) 먼저 삭제
		DELETE FROM comment
		WHERE boardno = ?
	*/
	String sql2 = "DELETE FROM comment WHERE boardno = ?";
	PreparedStatement stmt2 = null;
	stmt2 = conn.prepareStatement(sql2);
	stmt2.setInt(1, no);
	
	int row2 = stmt2.executeUpdate();
	
	System.out.println("deleteBoardAction - stmt2 = " + stmt2);
	System.out.println("deleteBoardAction - row2 = " + row2);
	
	
	/*
		글(부모) 삭제 하기
		DELETE FROM board
		WHERE no = ?
	*/
	String sql3 = "DELETE FROM board WHERE no = ?";
	PreparedStatement stmt3 = null;
	
	if(row1 == row2) {
		stmt3 = conn.prepareStatement(sql3);
		stmt3.setInt(1, no);
	}
	
	int row3 = stmt3.executeUpdate();
	
	System.out.println("deleteBoardAction - stmt2 = " + stmt3);
	
	if(row3 == 1) {
		response.sendRedirect("./boardList.jsp");
	} else {
		System.out.println("삭제 실패");
		response.sendRedirect("./boardOne.jsp?no=" + no);
	}
	

	//DB 자원 반납
	stmt3.close();
	stmt2.close();
	rs.close();
	stmt1.close();
	conn.close();


%>

728x90