🌏 DataBase/MySQL

[DB] 9. Statement(인터페이스)

ryang x2 2020. 10. 11. 23:37
728x90
반응형

# Statement(인터페이스) 

Statement 객체는 Statement 인터페이스를 구현한 객체를 Connection 클래스의
createStatement() 메소드를 호출함으로 리턴받을 수 있습니다. Statement 객체가 생성되면
executeQuery() 또는 executeUpdate() 메소드를 호출하여 SQL문장을 실행할 수 있습니다.

 

 

● Statement 단점

- SQL쿼리에 매개변수를 부여할 수 없습니다

- 매번 컴파일을 합니다.

- "insert into test values ("' + name + '", " + age + " , '" + gender +"')";

 

 

예시 1)

public class Main2 {
    public static void main(String[] args) {
        String url = "jdbc:mariadb://127.0.0.1:3306/webdev";
        String user = "root";
        String pw = "1234";
        String sql = "INSERT INTO tb_order VALUES('0000000011', 500, '껌', now(), 5);";
        System.out.println(sql);

        try{
            Class.forName("org.mariadb.jdbc.Driver");
            Connection conn = DriverManager.getConnection(url, user, pw);
            Statement stmt = conn.createStatement();
            int result = stmt.executeUpdate(sql); // update, insert, delete 실행
            if (result >= 1) System.out.println("DB Insert 성공!!!! ");
            else System.out.println("DB Insert 실패...");
        }catch (ClassNotFoundException e){
            System.out.println("드라이버 이름 또는 라이브러리를 확인하세요.");
        }catch (SQLException e){
            System.out.println("DB연결 실패, IP 또는 계정을 확인하세요.");
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

 

 

예시 2)

public class Main4 {
    public static void main(String[] args) {
        String url = "jdbc:mariadb://127.0.0.1:3306/webdev";
        String user = "root";
        String pw = "1234";

        Scanner sc = new Scanner(System.in);
        System.out.println("모든 회원에게 포인트를 얼마나 나눠줄까요?");
        int input = sc.nextInt();
        try{
            Class.forName("org.mariadb.jdbc.Driver");
            Connection conn = DriverManager.getConnection(url, user, pw);
            Statement stmt = conn.createStatement();
            String sql = "update tb_member set mem_point = mem_point + ";
            sql += input;
            System.out.println(sql);
            int result = stmt.executeUpdate(sql);
            if (result >= 1){
                System.out.println("적용되었습니다.");
            }else{
                System.out.println("실패했습니다.");
            }
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }
}

▼▼▼
좌) 적용 전 ----> 우) 적용 후

 

 

예시 3)

public class Main5 {
    public static void main(String[] args) {
            String url = "jdbc:mariadb://127.0.0.1:3306/webdev";
            String user = "root";
            String pw = "1234";

            Scanner sc = new Scanner(System.in);
            System.out.println("어떤 회원을 탈퇴시킬까요?");
            int input = sc.nextInt();
            try{
                Class.forName("org.mariadb.jdbc.Driver");
                Connection conn = DriverManager.getConnection(url, user, pw);
                Statement stmt = conn.createStatement();
                String sql = "delete from tb_order where ord_memidx = " +  input;
                System.out.println(sql);
                int result = stmt.executeUpdate(sql);
                sql = "delete from tb_member where mem_idx = " +  input;
                System.out.println(sql);
                result = stmt.executeUpdate(sql);
                if (result >= 1){
                    System.out.println("탈퇴되었습니다.");
                }else{
                    System.out.println("탈퇴실패했습니다.");
                }
            }catch (ClassNotFoundException e){
                e.printStackTrace();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
    }

▼▼▼
좌) 적용 전 ----> 우) 적용 후

728x90
반응형