[Oracle] [Java] oracle과 java 연동

java_oracle

이번에는 oracle과 java를 연동하는 방법에 대하여 알아보도록 하겠습니다.

 

oracle port 확인 및 변경

  1. 커맨드라인 실행
    oracle-install-confirm-1
  2. DB 연결

    > conn system/oracle

  3. 포트 확인 명령어 ( 특별한 경우가 아닌 이상, 설치 할 때 보통 8080 으로 설정되어 있습니다)

    > select dbms_xdb.gethttpport() from dual;

  4. 포트 변경 명령어 ( 저의 경우 8079 포트로 변경하였습니다 )

    > exec dbms_xdb.sethttpport(8079);

 

 

oracle jdbc 연결

java와 oracle을 연동하기 위해선, oracle jdbc가 필요합니다.

  1. JDBC 위치 : C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
    jdbc 위치
  2. 해당 폴더를 복사 후에 jdk\jre\lib\ext 에다가 붙여넣습니다.
    (필자의 경우 jdk1.8.0_161 버전을 사용하므로  C:\Program Files\Java\jdk1.8.0_161\jre\lib\ext )ojdbc 붙여넣기

 

eclipse 실행 및 oracle jdbc 연동

  1. 프로젝트 생성
    프로젝트 생성
  2. Properties => Libraries => Add External JARs.. => OJDBC6 추가
  3. Properties Add External JARs ojdbc6 연동 확인

 

test code 작성

  1. Class 생성
  2. 코드 작성
package oracleTutorial;

import java.sql.*;

public class ConnTest {
    
    public static Connection getConnection () {
        String user = "system";
        String pw = "oracle";
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        Connection conn = null;
        
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            conn = DriverManager.getConnection(url, user, pw);
            System.out.println("성공");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return conn;
    }
    
    static public void selectList (Connection conn, PreparedStatement pstmt, ResultSet res) throws SQLException {
        String sql = "SELECT * FROM sys.board";
        pstmt = conn.prepareStatement(sql);
        res = pstmt.executeQuery(); 
        while (res.next()) {
            int idx = res.getInt("idx");
            String writer = res.getString("writer");
            String subject = res.getString("subject");
            String content = res.getString("content");
            String date = res.getString("reg_date");
            System.out.println("글번호 : "+idx);
            System.out.println("작성자 : "+writer);
            System.out.println("제목 : "+subject);
            System.out.println("내용 : "+content);
            System.out.println("작성일 : "+date);
            System.out.println("");
        }
        
    }
    
    static public void main (String[] arg) throws ClassNotFoundException, SQLException {
        
        Connection conn = getConnection();
        PreparedStatement pstmt = null;
        ResultSet res = null;
        String sql;
        
        // truncate : 테이블 비우기
        sql = "delete from sys.board";
        pstmt = conn.prepareStatement(sql);
        pstmt.executeUpdate();
        
        // insert test
        sql = "INSERT INTO sys.board VALUES(?, ?, ?, ?, SYSDATE)";
        pstmt = conn.prepareStatement(sql);
        pstmt.setInt(1, 1);
        pstmt.setString(2, "작성자");
        pstmt.setString(3, "제목");
        pstmt.setString(4, "내용");
        pstmt.executeUpdate();
        
        // select
        System.out.println("-- after insert");
        selectList(conn, pstmt, res);
        
        // update test
        sql = "UPDATE sys.board SET subject = ? where idx = ?";
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, "제목 수정");
        pstmt.setInt(2, 1);
        pstmt.executeUpdate();
        
        // select test
        System.out.println("-- after update");
        selectList(conn, pstmt, res);
        
        // delete test
        sql = "DELETE FROM sys.board where idx = ?";
        pstmt = conn.prepareStatement(sql);
        pstmt.setInt(1, 1);
        pstmt.executeUpdate();
        
        // select test
        System.out.println("-- after delete");
        selectList(conn, pstmt, res);
        
        
    }
    
}

 

결과 확인

결과 확인