본문 바로가기

IT코딩공부!

#18 DB+인텔리제이 작업

오늘의 노래!!! 내일 곡 - 못된송아지 엉덩이에 뿔(현수짱 남친 !)

 
Attention
아티스트
NewJeans
앨범
NewJeans 1st EP 'New Jeans'
발매일
2022.08.01

[0]DB와 인텔리제이 연동(DBC클래스) -- 고정!!! 

public class DBC {

 

//기본구조

1.필드

2.생성자

3.메소드

 public  static Connection DBConnect(){

        // DB에 접속정보를 저장하기 위한 Connection타입의 객체 con 선언
        Connection con = null;

        // 접속할 DB의 주소 정보
        String url = "jdbc:oracle:thin:@localhost:1521:xe"; //xe버전 정보!!

        // DB에 접속할 정보(아이디, 비번)
        String user = "PC1";
        String password = "1111";

        // DB 파일 접속을 위한 정보 (forName)에 빨간줄에 try.catch 선택 하면 문구생김
        // 오류가 발생하지 않을겨우 (try문) 실행
        try {
            // ojdbc8 파일을 현재 프로젝트 적용
            Class.forName("oracle.jdbc.driver.OracleDriver");

            // 오라클에 접속할 계정 정보 con에 등록 >> 빨간줄에(다른오류에 대해서 새로운 catch문 추가)
            con = DriverManager.getConnection(url, user,password);
            //con = DriverManager.getConnection(oracle.jdbc.driver.OracleDriver, PC1,1111); 도 가능!!


            System.out.println("DB 접속 성공!");


                // ↓ 이 오류가 발생 했을 경우 실행 오류발생시(catch)문 실행
        } catch (ClassNotFoundException e) {

            // 파일 존재 없거나 Class.Name을 잘못 입력할경우
            System.out.println("DB접속 실패 : 드라이버 로딩실패!");
            throw new RuntimeException(e);

              // ↓ 계정 정보가 잘못될 경우
        } catch (SQLException e) {
            // url, user, password를 잘못입력할 경우
            System.out.println("DB접속 실패 : 접속 정보 확인!");
            throw new RuntimeException(e);
        }

        return  con;
    }

}


[1]DB와 인텔리제이 연동(SQL클래스)

// 테이블은 sql에서 작성
// CRUD만 작성하자

public class CRUD_SQL {

// DB에 접속하기 위한 Connection 객체 con
    Connection con;

    // SQL문을 DB에 전달위한 Statement 객체 stmt
    Statement stmt;

    // 검색 조회한 결과를 저장하는 ResultSet 객체 rs
    ResultSet rs;

    // 6개 작성 해야한다!!, 이름은 아무렇게 작성 가능
    // [1] DB접속 : connect()

// [1] DB접속 : connect() 기본 작성중에 필수

    // 6개 작성 해야한다!!, 이름은 아무렇게 작성 가능
    // [1] DB접속 : connect()
    public void connect() {
    
        con = DBC.DBConnect();
        
    }

// [2] C삽입 : insert()  -- 순서 기억하기

public void insert() {

        // (1) 준비
        try {
            stmt = con.createStatement();


            // (2) 작성
            String sql = "INSERT INTO JDBCT VALUES('JAVA', 11)";


            // (3) 실행단계
            //실행 : stmt.executeUpdate(sql)
            //결과값 저장 : int result
            int result = stmt.executeUpdate(sql);

            // 1 행 이(가) 삽입되었습니다.
            System.out.println("result 값 : " + result);

            // (4) 확인단계
            if (result > 0) {
                System.out.println("성공!");
            } else {
                System.out.println("실패!");
            }

            // (5) 해제단계
            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

// [3] R조회 : select  -- sql문 선언과 rs선언 while문은으로 반복문 선언 파악하기!!!

 

// [3] R 조회 : select()
    public void select() {

        // (1) 준비
        try {
            stmt = con.createStatement();
            // (2) 작성
            String sql = " SELECT * FROM JDBCT";

            // (3) 실행단계
            // 실행 : stmt.executeQuery(sql)
            // 결과값 저장 : rs
            rs = stmt.executeQuery(sql);

            // (4) 확인단계
            // rs.next() : boolean 타입 데이터
            // 레코드가 존재할때 true, 아니면 false
            while(rs.next()){
                System.out.println("Data1 : " + rs.getString(1));
                System.out.println("Data2 : " + rs.getInt(2));
                System.out.println();
            }

            // (5) 해제단계
            stmt.close();
            rs.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

// [4] U수정 : update()

 // [4] U 수정 : update()
        public void update () {

            // (1) 준비
            try {
                stmt = con.createStatement();


                // (2) 작성
                String sql = "UPDATE JDBCT SET DATA2 = 8 WHERE DATA1 = 'JAVA'";


                // (3) 실행단계
                //실행 : stmt.executeUpdate(sql)
                //결과값 저장 : int result
                int result = stmt.executeUpdate(sql);

                // 1 행 이(가) 삽입되었습니다.
                System.out.println("result 값 : " + result);

                // (4) 확인단계
                if (result > 0) {
                    System.out.println("성공!");
                } else {
                    System.out.println("실패!");
                }

                // (5) 해제단계
                stmt.close();

            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }

// [5] D삭제 : delete()

            // [5] D 삭제 : delete()
            public void delete() {

                // (1) 준비
                try {
                    stmt = con.createStatement();


                    // (2) 작성
                    String sql = "DELETE FROM JDBCT WHERE DATA1 = 'ORACLE'";


                    // (3) 실행단계
                    //실행 : stmt.executeUpdate(sql)
                    //결과값 저장 : int result
                    int result = stmt.executeUpdate(sql);

                    // 1 행 이(가) 삽입되었습니다.
                    System.out.println("result 값 : " + result);

                    // (4) 확인단계
                    if (result > 0) {
                        System.out.println("성공!");
                    } else {
                        System.out.println("실패!");
                    }

                    // (5) 해제단계
                    stmt.close();

                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }

            }

// [6] DB접속 해체 : conClose() 해체 확인

            // [6] DB접속 해체 : conClose()
            public void conClase () {

                try {
                    con.close();
                    System.out.println("DB 접속 해체!!");
                } catch (SQLException e) {
                    //e.printStackTrace(); 이클립스에서만 나오는 메세지
                    // 오류가 발생한 경로 찾아준다!!
                    throw new RuntimeException(e);

                } catch (NullPointerException e) {
                    System.out.println("접속중이 아님!");
                    throw new RuntimeException(e);      //  == e.printStackTrace();
                }
            }

// [7] EMP 테이블 조회

// selectEMP()
            // EMP 테이블 조회!
            public void selectEMP() {
                // (1) 준비
                try {
                    stmt = con.createStatement();


                    // (2) 작성
                    String sql = "SELECT * FROM  EMP";

                    // (3) 실행단계
                    rs = stmt.executeQuery(sql);

                    // (4) 확인단계
                    while(rs.next()){
                        System.out.print("EMPNO : " + rs.getInt(1)+'|');
                        System.out.print("ENAME : " + rs.getString(2)+'|');
                        System.out.print("JOB : " + rs.getString(3)+'|');
                        System.out.print("MGR : " + rs.getInt(4)+'|');
                        System.out.print("HIREDATE : " + rs.getString(5).substring(0,10)+'|');
                        System.out.print("SAL : " + rs.getInt(6)+'|');
                        System.out.print("COMM : " + rs.getInt(7)+'|');
                        System.out.print("DEPTNO : " + rs.getInt(8)+'|');
                        System.out.println();
                    }


                    // (5) 해제단계
                    stmt.close();
                    rs.close();

                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }

}

select 작성할때 타입 확인 잘할것 (dayte일때 string)으로 진행 getString(1) 컬럼의 1번


[2]DB와 인텔리제이 연동(Main클래스)  

public class CRUD_Main {
    public static void main(String[] args) {

        // CRUD 객체 선언
        CRUD_SQL crud = new CRUD_SQL();

        // CRUD 작업 시작!!!!

        crud.connect();  // DB접속

        crud.insert();   // DB삽입
        crud.select();  // DB조회

        crud.conClase(); //DB접속 해체
    }
}

[3]DB와 인텔리제이 연동2(NAVER_MEMBER클래스) 

public class NaverMember{

// 필드

 // NAVER 테이블을 참고 해서 클래스를 작성하시오.

    //필드
    private String nId;
    private String nPw;
    private String nName;
    private  int nAge;
    private  String nGender;
    private  String nEmall;
    private  String nPhone;

// 생성자

public NaverMember() {

    }

// 메소드

    //메소드
    public String getnId() {
        return nId;
    }

    public void setnId(String nId) {
        this.nId = nId;
    }

    public String getnPw() {
        return nPw;
    }

    public void setnPw(String nPw) {
        this.nPw = nPw;
    }

    public String getnName() {
        return nName;
    }

    public void setnName(String nName) {
        this.nName = nName;
    }

    public int getnAge() {
        return nAge;
    }

    public void setnAge(int nAge) {
        this.nAge = nAge;
    }

    public String getnGender() {
        return nGender;
    }

    public void setnGender(String nGender) {
        this.nGender = nGender;
    }

    public String getnEmall() {
        return nEmall;
    }

    public void setnEmall(String nEmall) {
        this.nEmall = nEmall;
    }

    public String getnPhone() {
        return nPhone;
    }

    public void setnPhone(String nPhone) {
        this.nPhone = nPhone;
    }

    @Override
    public String toString() {
        return "NaverMember[" +
                "nId=" + nId  +
                ", nPw=" + nPw  +
                ", nName=" + nName  +
                ", nAge=" + nAge +
                ", nGender=" + nGender  +
                ", nEmall=" + nEmall   +
                ", nPhone=" + nPhone  +
                ']';
    }

 

 

}


[4]DB와 인텔리제이 연동2(NAVER_CRUD클래스)  

public class NAVER_CRUD{

    Connection con;

    Statement stmt;

    ResultSet rs;


    // '?'을 문자로 인식
    PreparedStatement pstmt;

// 문자 '?' 로 인식하는 거 중요

// DB 연결 --- 중요!!!

    public void NAVERDBConnection() {
        // DBC클래스의 메소드의 리턴값을 con에 대입
        con = NAVER_DBC.NAVERDBConnection();

    }

// insert 

public void insert() {

        // (1) 준비
        try {
            stmt = con.createStatement();


            // (2) 작성
            String sql = "INSERT INTO NAVERT VALUES('!@2#$','1234', '홍길동',20,'남','naver','01027512064' )";


            // (3) 실행단계
            //실행 : stmt.executeUpdate(sql)
            //결과값 저장 : int result
            int result = stmt.executeUpdate(sql);

            // (4) 확인단계
            if (result > 0) {
                System.out.println("성공!");
            } else {
                System.out.println("실패!");
            }

            // (5) 해제단계
            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

// select()

    public void select() {

        try {
            stmt = con.createStatement();

            String sql = " SELECT * FROM NAVERT";

            rs = stmt.executeQuery(sql);

            while (rs.next()) {
                System.out.print(" NID : " + rs.getString(1));
                System.out.print(" NPW : " + rs.getString(2));
                System.out.print(" NNAME : " + rs.getString(3));
                System.out.print(" NAGE : " + rs.getInt(4));
                System.out.print(" NGENDER : " + rs.getString(5));
                System.out.print(" NEMALL : " + rs.getString(6));
                System.out.print(" NPHOE : " + rs.getString(7));
                System.out.println();
            }

            stmt.close();
            rs.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }

// update()

public void update() {

        // (1) 준비
        try {
            stmt = con.createStatement();


            // (2) 작성
            String sql = "UPDATE NAVERT SET NGENDER = '?' WHERE NID = '?'";


            // (3) 실행단계
            //실행 : stmt.executeUpdate(sql)
            //결과값 저장 : int result
            int result = stmt.executeUpdate(sql);

            // (4) 확인단계
            if (result > 0) {
                System.out.println("성공!");
            } else {
                System.out.println("실패!");
            }

            // (5) 해제단계
            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

// delete()

    public void delete() {

        // (1) 준비
        try {
            stmt = con.createStatement();


            // (2) 작성
            String sql = "DELETE FROM NAVERT WHERE NID = ?";


            // (3) 실행단계
            //실행 : stmt.executeUpdate(sql)
            //결과값 저장 : int result
            int result = stmt.executeUpdate(sql);

            // (4) 확인단계
            if (result > 0) {
                System.out.println("삭제 성공!");
            } else {
                System.out.println("삭제 실패!");
            }

            // (5) 해제단계
            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

// conClass()

    public void conClase() {

        try {
            con.close();
            System.out.println("DB 접속 해체!!");
        } catch (SQLException e) {

            throw new RuntimeException(e);
        } catch (NullPointerException e) {
            System.out.println("접속중이 아님!");
            throw new RuntimeException(e);      //  == e.printStackTrace();
        }
    }

// memberJoin 메소드 main 출력할때 한번에 출력을 하기 위해서 사용하는 메소드 각 타입별로 넣는것이 중요

 public void memberJoin(NaverMember member) {
                    
        String sql = "INSERT INTO NAVERT VALUES(?,?,?,?,?,?,?)";

        try {
            pstmt = con.prepareStatement(sql);
            // 숫자 선언시 위에 있는 sql문 ?순서와 같이 해줘야 한다
            // sql문의 첫번쨰 '?'에 member 객체의 nId값(getnId())를 입력
            pstmt.setString(1, member.getnId());
            pstmt.setString(2, member.getnPw());
            pstmt.setString(3, member.getnName());
            pstmt.setInt(4, member.getnAge());
            pstmt.setString(5, member.getnGender());
            pstmt.setString(6, member.getnEmall());
            pstmt.setString(7, member.getnPhone());

            int result = pstmt.executeUpdate();

            if (result > 0) {
                System.out.println("가입 성공");
            } else {
                System.out.println("가입 실패");
            }

            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

// idCheck()메소드 boolean타입가지고 if문을 가지고 각각의 조건을 가지고 구함

public boolean idCheck(String nId, String nPw) {

        // 리턴값을 구하기 위한 변수 선언
        boolean checkResult = false;

        String sql = "SELECT * FROM NAVERT WHERE NID=? AND NPW=?"; //둘이 같아

        try {
            //준비단계
            pstmt = con.prepareStatement(sql);

            // sql문의 '?'에 데이터 넣기
            pstmt.setString(1, nId);
            pstmt.setString(2, nPw);

            // 결과를 저장할 rs
            // 실행 >> pstmt.executeQuery()
            rs = pstmt.executeQuery();

            // rs.next() >> 데이터가 있으면 ture , 없으면 false
            if (rs.next()) {
                // 아이디,비번 일치할때
                checkResult = true;
            } else {
                // 사실 무의미함 이유 : 원래 checkResult가 = false 여서
                // 아이디, 비번 하나라도 틀리면 실행
                checkResult = false;
            }
            pstmt.close();
            rs.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        return checkResult;
    }

// idCheck()메소드

 // 아이디 비밀번호 일치 여부 확인 메소드 : 데이터타입 boolean
    public boolean idCheck(String nId, String nPw) {

        // 리턴값을 구하기 위한 변수 선언
        boolean checkResult = false;

        String sql = "SELECT * FROM NAVERT WHERE NID=? AND NPW=?"; //둘이 같아

        try {
            //준비단계
            pstmt = con.prepareStatement(sql);

            // sql문의 '?'에 데이터 넣기
            pstmt.setString(1, nId);
            pstmt.setString(2, nPw);

            // 결과를 저장할 rs
            // 실행 >> pstmt.executeQuery()
            rs = pstmt.executeQuery();

            // rs.next() >> 데이터가 있으면 ture , 없으면 false
            if (rs.next()) {
                // 아이디,비번 일치할때
                checkResult = true;
            } else {
                // 사실 무의미함 이유 : 원래 checkResult가 = false 여서
                // 아이디, 비번 하나라도 틀리면 실행
                checkResult = false;
            }
            pstmt.close();
            rs.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        return checkResult;
    }

// memberDelete() 메소드 

    public void memberDelete(String nId) {
        String sql = "DELETE FROM NAVERT WHERE NID=?";

        try {
            pstmt = con.prepareStatement(sql);

            pstmt.setString(1, nId);

            int result = pstmt.executeUpdate();

            if (result > 0) {
                System.out.println("삭제 성공");
            } else {
                System.out.println("삭제 실패");
            }

            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }

// memberJoin1() 메소드 

public void memberJoin1(NaverMember member) {

        String sql = "UPDATE NAVERT SET " +
                "NPW=?," +
                "NName=?, " +
                "NAge = ?, " +
                "NGender = ?, " +
                "NEmail = ?, " +
                "NPhone = ? " +
                "WHERE NID=?";

        try {
            pstmt = con.prepareStatement(sql);

            // sql문의 첫번쨰 '?'에 member 객체의 nId값(getnId())를 입력

            pstmt.setString(1, member.getnPw());
            pstmt.setString(2, member.getnName());
            pstmt.setInt(3, member.getnAge());
            pstmt.setString(4, member.getnGender());
            pstmt.setString(5, member.getnEmall());
            pstmt.setString(6, member.getnPhone());
            pstmt.setString(7, member.getnId());

            int result = pstmt.executeUpdate();

            if (result > 0) {
                System.out.println(" 성공");
            } else {
                System.out.println(" 실패");
            }

            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

}


[5]DB와 인텔리제이 연동2(NAVER_Main클래스)  

// main()

public class NAVER_Main {
    public static void main(String[] args) {

        // CRUD 객체 선언
        NAVER_CRUD crud = new NAVER_CRUD();

        // CRUD 작업 시작!!!!

        crud.NAVERDBConnection();  // DB접속
        NaverMember member = new NaverMember();
        Scanner sc = new Scanner(System.in);

        boolean run = true;
        int menu = 0;

// while문은 run이 false일때 까지 반복

while (run){
            System.out.println("================================================");
            System.out.println("1. DB접속   2. 접속해제   3. 회원가입   4. 회원목록");
            System.out.println("5. 회원수정  6. 회원삭제   7. 종료");
            System.out.println("================================================");
            System.out.println("선택>>");
            menu = sc.nextInt();

// swith문 case 1,2,3,4,5,6,7

// case1 DB연결

switch (menu){

                case 1:
                    crud.NAVERDBConnection();
                    break;

// case2 접속해체

case 2:
                    crud.conClase();
                    break;

// case3 회원가입 

// memberJoin으로 불러와서 각각 입력받는다

case 3:
                    System.out.println("회원정보를 입력!");
                    System.out.println("아이디 : ");
                    String nId = sc.next();

                    System.out.println("비번 : ");
                    String nPw = sc.next();

                    System.out.println("이름 : ");
                    String nName = sc.next();

                    System.out.println("나이 : ");
                    int nAge = sc.nextInt();

                    System.out.println("성별 : ");
                    String nGender = sc.next();

                    System.out.println("이메일 : ");
                    String nEmail = sc.next();

                    System.out.println("연락처 : ");
                    String nPhone = sc.next();

                    // 입력 정보를 담는다
                    member.setnId(nId);
                    member.setnPw(nPw);
                    member.setnName(nName);
                    member.setnAge(nAge);
                    member.setnGender(nGender);
                    member.setnEmall(nEmail);
                    member.setnPhone(nPhone);

                    crud.memberJoin(member);

                    break;

// case4 회원목록을 그대루

case 4:
                    crud.select();
                    break;

// case5 boolean타입으로 각각의 조건을 나타냄

case 5:
                    System.out.print("삭제할 아이디 : ");
                    nId = sc.next();

                    System.out.print("비번 : ");
                    nPw = sc.next();

                    boolean check2 = crud.idCheck(nId, nPw);

                    if(check2){
                        System.out.println("아이디와 비밀번호가 일치합니다");

                        System.out.print("수정할 비번 : ");
                        String cPw = sc.next();

                        System.out.print("수정할 이름 : ");
                        String  cName = sc.next();

                        System.out.print("수정할 나이 : ");
                        int  cAge = sc.nextInt();

                        System.out.print("수정할 성별 : ");
                        String cGender = sc.next();

                        System.out.print("수정할 이메일 : ");
                        String cEmail = sc.next();

                        System.out.print("수정할 번호 : ");
                        String cPhone = sc.next();

                        member.setnId(nId);
                        member.setnPw(cPw);
                        member.setnName(cName);
                        member.setnAge(cAge);
                        member.setnGender(cGender);
                        member.setnEmall(cEmail);
                        member.setnPhone(cPhone);

                        crud.memberJoin1(member);

                    }else {
                        System.out.println("아이디와 비밀번호가 일치하지 않습니다.");
                    }
                    break;

// case6,7

case 6:
                    System.out.print("삭제할 아이디 : ");
                    nId = sc.next();

                    System.out.print("비번 : ");
                    nPw = sc.next();

                    boolean check1 = crud.idCheck(nId, nPw);

                    if(check1){
                        System.out.println("아이디와 비밀번호가 일치합니다");

                        // 삭제 메소드 작성
                        crud.memberDelete(nId);

                    }else {
                        System.out.println("아이디와 비밀번호가 일치하지 않습니다.");
                    }
                    break;
                case 7:
                    run = false;
                    break;
                default:
                    System.out.println("다시 입력하시오");
                    break;

            }

        }

    }

 

'IT코딩공부!' 카테고리의 다른 글

#20 HTML 공부 시작!!! (툴 : vscode)  (0) 2023.04.26
#19 (은행) DB+인텔리제이  (0) 2023.04.14
#17 DB (JOIN) OR 인텔리제이+ORACLE 연동  (0) 2023.04.12
#16 !CONSTRAINT(제약조건)!  (0) 2023.04.11
#15 집합  (0) 2023.04.10