Programming/JAVA

JDBC 처리순서 / 오라클 oracle 연동

Jayna. 2024. 1. 13. 16:42
728x90

 

 

MVC 패턴 / ojdbc6.jar / Statement 와 PreparedStatement / ClassNotFoundException

1. MVC 패턴 Model 데이터와 관련된 역할. 데이터를 담는다거나, DB에 접근해서 데이터 입출력 View 사용자가 보게 될 시각적인 요소 / 화면 (입력, 출력) Controller 사용자의 요청을 받아서 처리 후 응답

jaynarecord.tistory.com

 

JDBC용 객체

 - Connection: DB의 연결정보를 담고 있는 객체

 - (Prepared)Statement: 해당 DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체

 - ResultSet: 만일 실행한 SQL문이 SELECT문일 경우 조회된 결과들이 담겨있는 객체

 

 

728x90

JDBC 처리 순서

1) JDBC Driver 등록: 해당 DBMS가 제공하는 클래스 등록

2) Connection 생성: 접속하고자하는 DB정보를 인력해서 DB에 접속하면서 생성

3) Statement 생성: Connection 객체를 이용해서 생성

4) SQL문 전달하면서 실행: Statement 객체를 이용해서 SQL문 실행

  SELECT문일 경우 - executeQuery 메소드 이용

  DML문일 경우 - executeUpdate 메소드 이용

5) SELECT문일 경우 - ResultSet 객체(조회된 데이터들이 담겨있음)로 받기 => 6_1

    DML문일 경우 - int(처리된 행 수)fh qkerl => 6_2

6)

6_1) Result에 담겨있는 데이터들을 하나씩 뽑아서 VO객체에 담기

6_2) 트랜잭션 처리(성공이면 COMMIT, 실패면 ROLLBACK)

7) 다 쓴 JDBC용 객체들은 반드시 자원반납(close) => 생성된 역순으로

8) 결과반환(Controller)

     > SELECT문일 경우 - 6_1) 만들어진 결과
     > DML문일 경우 - int(처리된 행 수)

public static void main(String[] args) {

    /*
    // 사용자에게 값을 입력받아 DBMS로 전달
    Scanner sc = new Scanner(System.in);
    System.out.print("번호 :  ");
    int num = sc.nextInt();
    sc.nextLine();
    System.out.print("이름 : ");
    String name = sc.nextLine();

    // 필요한 변수들 먼저 세팅
    // 1단계 끝
    int result = 0;
    Connection conn = null;
    Statement stmt = null;

    // 2단계 
    // 실행 SQL("완성형태"로 만들기)
    // 맨 뒤에 세미콜론은 절대 붙이면 안됨

    // String sql = "INSERTINTO TEST VALUES(3, '이민역', SYSDATE)";
    String sql = "INSERT INTO TEST VALUES("+ num + ", '" + name + "', SYSDATE)";		

    try {
        // 1) JDBC driver 등록
        Class.forName("oracle.jdbc.driver.OracleDriver");
        System.out.println("driver 등록 성공");

        // 2) Connection 객체 생성
        // DB에 연결 (url, 계정명, 비밀번호)
        conn = DriverManager.getConnection("JDBC:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
        System.out.println("Connection 객체 생성!");

        // 3) Statement 객체 생성
        stmt = conn.createStatement();
        System.out.println("Statement 객체 생성!");

        // 4) SQL 쿼리 날려서 실행 후 결과받기 ( 처리된 행 수 )
        result = stmt.executeUpdate(sql);

        // 내가 실행할 SQL문이 DML문(INSERT, UPDATE, DELETE) 일 경우
        // => stmt.executeUpdate("DML문") : int
        // 내가 실행할 SQL문이 SELECT문인 경우
        // => stmt.executeQuery("SELECT") : resultSet

        // 5) 트랜잭션 처리
        if(result > 0) { // 성공했을 경우 commit
            conn.commit();
        }else { // 아닐 경우 rollback
            conn.rollback();
        }


    } catch (ClassNotFoundException e) {
        System.out.println("드라이버 오타");
        e.printStackTrace();
    } catch (SQLException e) {
        System.out.println("커넥션 객체 확인하기");
        e.printStackTrace();
    } finally {
        try {
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }	
    }		
    if(result > 0) {
        System.out.println("insert 성공");
    }else {
        System.out.println("insert 실패");
    }

    */

    // 2. 내 pc DBMS상 JDBC계정에 TEST테이블 모든 데이터 조회해보기
    // SELECT문
    // => ResultSet(조회된 데이터들 담겨있음) 받기
    // => ResultSet으로부터 데이터 뽑기

    // 필요한 변수들 셋팅
    Connection conn = null;
    Statement stmt = null;
    ResultSet rset = null; // SELECT문 실행된 조회 결과값들이 처음 담길 객체

    String sql = "SELECT * FROM TEST" ;

    try {
        // 1) JDBC Driver 등록
        Class.forName("oracle.jdbc.driver.OracleDriver");
        // 2) Connection 객체 생성
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
        // 3) Statement 객체 생성
        stmt = conn.createStatement();
        // 4) SQL문 전달해서 실행 후 결과받기(ResultSet 객체) 
        rset = stmt.executeQuery(sql);			
        // 5) 
        while(rset.next()) {
            // 커서를 움직여주는 역할
            // 해당 행이 있으면 true, 없으면 false				
            int tNo = rset.getInt("TNO");
            String tName = rset.getString("TNAME");
            Date tDate = rset.getDate("TDATE");
            System.out.println(tNo + ", " + tName + "," + tDate);				
        }			
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            rset.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 

 

 

 

 

JDBC Statement 처리순서

MVC 패턴 / ojdbc6.jar / Statement 와 PreparedStatement / ClassNotFoundException 1. MVC 패턴 Model 데이터와 관련된 역할. 데이터를 담는다거나, DB에 접근해서 데이터 입출력 View 사용자가 보게 될 시각적인 요소 /

jaynarecord.tistory.com

 

728x90