20.8 데이터 삭제

이번 절에서는 JDBC를 이용해서 DELETE 문을 실행하는 방법을 알아보자. boards 테이블에서

bwriter가 winter인 모든 게시물을 삭제하는 DELETE 문은 다음과 같다.

DELETE FROM boards WHERE bwriter = 'winter'

조건절의 값을 ?로 대체한 매개변수화된 DELETE 문으로 변경한다.

DELETE FROM boards WHERE bwriter = ?

매개변수화된 DELETE 문을 String 타입 변수 sql에 대입한다.

String sql = “DELETE FROM boards WHERE bwriter = ?”;

매개변수화된 D E L E T E 문을 실행하기 위해 p r e p a r e S t a t e m e n t ( ) 메소드로부터

PreparedStatement를 얻고 ?에 값을 지정한 후, executeUpdate로 SQL 문을 실행한다. 리턴

값은 삭제된 행 수이다.

String sql = “DELETE FROM boards WHERE bwriter = ?”; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, “winter”); int rows = pstmt.executeUpdate();

다음은 boards 테이블에 저장된 게시물 정보를 삭제하는 전체 코드이다.

»> BoardDeleteExample.java



package ch20.mysql.sec08;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class BoardDeleteExample {
  public static void main(String[] args) {
    Connection conn  =  null;
    try {
      //JDBC Driver 등록
      Class.forName("com.mysql.cj.jdbc.Driver");

      //연결하기
      conn  =  DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/thisisjava", 
        "java", 
        "mysql"

      );

      //매개변수화된 SQL 문 작성
      String sql  =  "DELETE FROM boards WHERE bwriter = ?";

      //PreparedStatement 얻기 및 값 지정
      PreparedStatement pstmt  =  conn.prepareStatement(sql);
      pstmt.setString(1, "winter");

      //SQL 문 실행
      int rows  =  pstmt.executeUpdate();
      System.out.println("삭제된 행 수: " + rows);

      //PreparedStatement 닫기
      pstmt.close();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {



     
     
     
     
     


      if(conn !=  null) {
        try { 
          //연결 끊기
          conn.close(); 
        } catch (SQLException e) {}

      }

    }

  }

}


실행 결과


삭제된 행 수: 10  (winter가 작성한 게시물 개수에 따라 삭제된 행 수는 다를 수 있음)

서브목차