본문 바로가기

카테고리 없음

2021-06-02자바공부(Mysql 연동 실습 내용 )

반응형

어제 배운 내용에서 조금 더 어려운 실습을 해보도록 할것이다. 

이러한 게시판을 만들도록 할것이다. 해당 알파벳을 누르면 해당하는 항목으로 이동하며, 

등록 , 수정, 삭제, 목록출력 등을 할것이다 .

public class SelfCheck_sql {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Statement state = null;
        Connection conn = null;
        PreparedStatement prepared = null;

        try {

            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Board?serverTimezone=UTC", "root", "12345");
            System.out.println("데이타 베이스에 들어왔슴둥");
            while (true) {

                state = conn.createStatement();

                System.out.println("====게시판====");
                System.out.println("a. 글 등록");
                System.out.println("b. 글 목록보기");
                System.out.println("c. 글 내용보기");
                System.out.println("d. 글 삭제하기");
                System.out.println("e. 글 수정하기");
                System.out.println("f. 종료 하기");
                System.out.println("메뉴를 선택 하세요 : ");

                String command = scan.next();
                switch (command) {
                    case "a":
                        System.out.println("===글 등록하기===");
                        //메소드 호출
                        addlist(scan, conn);
                        break;

                    case "b":
                        System.out.println("===글 목록보기===");
                        //메소드 호출
                        showlist(state);
                        break;

                    case "c":
                        System.out.println("===글 내용보기===");
                        //메소드 호출
                        showsubject(scan, state);
                        break;

                    case "d":
                        System.out.println("===글 삭제하기===");
                        //메소드 호출
                        deletelist(scan, state);
                        break;

                    case "e":
                        System.out.println("===글 수정하기===");
                        //메소드 호출
                        changelist(scan, prepared, conn, state);
                        break;

                    case "f":
                        System.out.println("===종료하기를 눌럿습니다.===");
                        return;

                    default:
                        System.out.println("===메뉴 선택잘못하셨습니다.===");
                        break;
                }
            }
        } catch (ClassNotFoundException | SQLException e) {
            System.out.println("오류가 낫슴둥");
            e.printStackTrace();
        }
    }
    //삽입 메소드
    public static void addlist(Scanner scan, Connection conn) {
        //넣어줄 항목들 사용자에게 받아오기
        System.out.print("작성자 :");
        String writer = scan.next();
        System.out.print("비밀번호 :");
        String passwd = scan.next();
        System.out.print("이메일 :");
        String email = scan.next();
        System.out.print("제목 :");
        String subject = scan.next();

        try {
            //PreparedStatement 생성하고 뒤에 ?부분을 아래에 set String 으로 순차 적으로 넣어주고 있다.
            PreparedStatement prepared = conn.prepareStatement("INSERT INTO board value(null,?,?,?,?)");
            prepared.setString(1, writer);
            prepared.setString(2, passwd);
            prepared.setString(3, email);
            prepared.setString(4, subject);
            prepared.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }


    }
    //보여주기 메소드
    public static void showlist(Statement state) {
        try {
            //ResultSet으로 출력해주기
            ResultSet rs = state.executeQuery("SELECT * FROM board");
            while (rs.next()) {
                System.out.print("\t|\t" + rs.getString(1));
                System.out.print("\t|\t" + rs.getString(2));
                System.out.print("\t|\t" + rs.getString(3));
                System.out.print("\t|\t" + rs.getString(4));
                System.out.print("\t|\t" + rs.getString(5) + "\n");
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
    //내용보여주기 메소드
    public static void showsubject(Scanner scan, Statement state) {
        System.out.println("검색할 글 번호를 입력하세요 ");
        System.out.print("글번호 : ");
        int num = scan.nextInt();
        ResultSet rs = null;
        try {
            //ResultSet으로 원하는 쿼리문 작성후 출력 해주기
            rs = state.executeQuery("SELECT writer, email, subject from board where id = " + num);
            rs.next(); // 커서 이동시켜야 작동함
            System.out.println("작성자 = " + rs.getString("writer") + ", 이메일 = " + rs.getString("email") + ", 제목 = " + rs.getString("subject"));

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
    //수정하는 메소드
    public static void changelist(Scanner scan, PreparedStatement prepared, Connection conn ,  Statement state ) {
        System.out.println("수정할 글 번호를 입력하세요 ");
        System.out.print("글번호 : ");
        String num = scan.next();

        try {
            //수정할 부분들 ? 로 채우고 순서대로 사용자에게 수정할 텍스트 받아오기
            prepared = conn.prepareStatement("UPDATE board SET writer = ? , passwd= ? ,email = ? ,subject=? WHERE id = " + num);
            ResultSet rs = state.executeQuery("SELECT * FROM board WHERE id = " + num);
            rs.next(); // 커서이동 시켜줘야 작동함

            System.out.println("원래 작성자 :" + rs.getString("writer"));
            System.out.print("수정할 작성자 : ");
            String writer = scan.next();

            System.out.println("원래 비밀번호 :" + rs.getString("passwd"));
            System.out.print("수정할 비밀번호 : ");
            String password = scan.next();

            System.out.println("원래 이메일 :" + rs.getString("email"));
            System.out.print("수정할 이메일 : ");
            String email = scan.next();

            System.out.println("원래 제목 :" + rs.getString("subject"));
            System.out.print("수정할 제목 : ");
            String subject = scan.next();

            prepared.setString(1, writer);
            prepared.setString(2, password);
            prepared.setString(3, email);
            prepared.setString(4, subject);
            prepared.executeUpdate();
            System.out.println("정보수정 완료 했습니다.");


        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
    //삭제 메소드
    public static void deletelist(Scanner scan, Statement stat) {
        System.out.println("삭제할 글 번호를 입력하세요 ");
        System.out.print("글번호 : ");
        String num = scan.next();
        try {
            stat.executeUpdate("DELETE FROM board where id =" + num);
            System.out.println(num + "번 글이 삭제되었습니다.");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

}

 

사진으로 넣다보니까 뒤죽박죽인데 보는데 불편함은 없을것이라 생각이 든다. 

반응형