ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle JDBC 사용 방법
    servlet/JDBC 2022. 2. 3. 22:30
    반응형

     

     

     

     

    JDBC 란?

     JDBC(Java DataBase Connectivity)란 자바에서 데이터베이스에 접근할 수 있게 해주는 Programming API 이다.

     

     

     

     

    Oracle JDBC

     

     

    오라클 JDBC 라이브러리 ojdbc8 다운

     

    https://www.oracle.com/database/technologies/appdev/jdbc-ucp-18-15-downloads.html


     

    Charactoer Set 설정

     

     문자 인코딩 방식이 맞지 않으면 해당 문자가 제대로 출력되지 않으므로 이클립스 작업 파일에 대한 문자셋을 UTF-8로 일치시켜야 한다. 따라서 다음과 같이 Window->Preferences에서 다음과 같은 설정을 해준다.

     

    • 기본 문자 인코딩


     

    JDBC 사용 클래스

     

    • DriverManger
       - 데이터 원본에 JDBC 드라이버를 통하여 커넥션을 만드는 역할
       - Class.forName() 메서드를 통해 생성되며 반드시 예외처리를 해야 함
       - 직접 인스턴스 생성이 불가능하고 getConnection() 메서드를 사용하여 인스턴스 생성 가능
      Class.forName("oracle.jdbc.driver.OracleDriver");​
    • Connection
       - 특정 데이터 원본과 연결된 커넥션을 나타내며 Statement 인스턴스를 생성할 때도
         Connection 인스턴스를 사용하여 createStatement() 메서드를 호출하여 생성
       - SQL 문장을 실행시키기 전에 우선 Connection 인스턴스가 있어야 된다.
      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "아이디", "비밀번호");​
    • Statement
       - Connection 클래스의 createStatement() 메서드를 호출하여 얻을 수 있다.
       - 생성된 Statement 인스턴스로 SQL 질의문을 String에 담아 인자로 전달하여
         executeQuery() 메서드를 호출하여 SQL 질의 수행
      String query = "SELECT ID, LAST_NAME FROM EMP";
      stmt = conn.createStatement();
      rset = stmt.executeQuery(query);​


    • PreparedStatement
       - Connection 클래스의 preparedStatement() 메서드를 사용하여 인스턴스 생성
       - SQL 질의문을 위치홀더(placeholder)?로 표현되는 String으로 정의
       - PreparedStatement는 위치홀더에 해당되는 인수가 많아서
        특정 값만 바꾸어 여러 번 실행해야 할 때 사용하면 유용함
       - Statement는 SQL 문장을 매번 컴파일 하지만 PreparedStatement는
        한 번만 컴파일하므로 실행 속도가 빠름
      String query = "INSERT INTO MEMBER VALUES(?,?)";
      pstmt = conn.preparedStatement(query);
      pstmt.setString(1, id);
      pstmt.setString(2, password);​
    • ResultSet
       - SELECT문을 사요한 질의 성공 시 ResultSet을 반환
       - SQL 질의문에 의해 생성된 테이블을 담고 있으며 커서(cursor)로 특정 행에 대한 참조 조작
      String id = rset.getString("ID");
      String pwd = rset.getString(2);​

     

    JDBC 코딩 절차

     

    1. DriverManager에 해당 DBMS Driver 등록
    2. 해당 Driver로부터 Connection instance 획득
    3. 해당 Driver로부터 Connection instance 획득
    4. Statement에서 제공하는 메서드를 사용하여 SQL문 실행
    5. Statement에서 제공하는 메소드를 사용하여 SQL문 실행

     

     

    참고
    properties 파일을 이용한 연결 정보 관리

     

    jdbc-config.properties 파일 생성     경로 : config/

    driver=oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@localhost:1521:xe
    user=아이디
    password=비밀번호

     

    properties 파일에서 연결 정보를 가져와 JDBC 연결

    Properties prop = new Properties();
    Connection conn = null;
    
    try {
        prop.load(new FileReader("config/jdbc-config.properties"));
    
        String driver = prop.getProperty("driver");
        String url = prop.getProperty("url");
        String user = prop.getProperty("user");
        String password = prop.getProperty("password");
    
        /* 사용할 드라이버 등록 */
        Class.forName(driver);
    
        /* DriverManager를 이용해 Connection 생성 */
        conn = DriverManager.getConnection(url, user, password);
    
        System.out.println(conn);
    
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if(conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

     

     

    반응형

    댓글

Designed by Tistory.