ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 알기 쉬운 JAVA JDBC 연동 방법에 대해 알아보자
    프로그래밍/JDBC 2020. 6. 9. 12:45

    JAVA에서 JDBC 연동하는 방법

    이클립스환경에서 Oracle 데이터베이스를 연결하는 방법에 대해서 알아보도록 하자. (oracle 11g 설치)

    JDBC 연동 방법

    JDBC(Java Database Connectivity)는 Java 와 Database를 연동하는 애플리케이션을 구현할 수 있도록 해주는 API이며, 간단히 java.sql 패키지라고 할 수 있다. 이 java.sql 패키지는 80%가 interface로 구현되어 있으며, 해당 인터페이스를 각 DBMS 개발자들이 상속받아 구현을 하는데 이를 드라이버라고 한다.

     

    각 회사(oracle, mysql 등)마다 개발해놓은 Driver가 다르기 때문에 우리는 자신이 설치한 DB에 맞게 드라이버를 설치해서 JDBC연동을 시켜주면 된다.

     

    여기서는 이클립스를 통해 oracle DB를 사용하는 방법에 대해 알아보려고 한다.

     

    1. ojdbc6.jar파일 연동

    1) oracle 사이트에서 jdbc driver 다운로드 ==> ojdbc6.jar 파일

    2) oracle이 깔려 있다면 자동으로 driver 파일도 깔려 있다.

    ==> C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

    3) 위 경로에서 ojdbc6.jar파일을 복사하여 자바가 설치되어있는 폴더에 붙여넣기 한다.

    ==> C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext  // 설정 완료

    2. 이클립스에 ojdbc6.jar 파일 넣기

    1. Package Explorer에서 JRE System Library 클릭

     

    2. 마우스 우클릭 후 Properties 클릭

     

    3. Installed JREs 클릭

     

    4. Jre를 선택하고 Edit 메뉴 클릭

     

    5. Add External JARs 클릭

     

    6. ojdbc.6jar를 넣었던 폴더 C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext로 경로 이동 후 ojdbc6.jar 선택하고 열기 클릭

     

    7. 라이브러리에 ojdbc6.jar가 추가되어있는 것을 확인하고 Finish를 누른다.

    연동되었다!

     

    * 만약 설정이 안된다면

    classpath에 C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\ojdbc6.jar 경로를 추가한다.

    ==> 제어판 -> 시스템 -> 고급 -> 환경변수 -> classpath 찾아 편집

    ==> .;C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\ojdbc6.jar 입력해준다.

     

    3. 기본적인 코드 구성

    1) 드라이버 객체화

    Class.forName("oracle.jdbc.driver.OracleDriver");

    2) DB와 연결

    Connection con = DriverManager.getConnection();

    3) 실행도구 생성 (sql문을 실행시키기위한 Statement 객체 얻어오기)

    Statement stmt = con.createStatement();

    4) SQL문 실행

    stmt.execute(sql);

    5. DB연결 종료

    stmt.close();

    con.close();

     

    4. 코드를 통해 JDBC 연동

    이제 실제로 자바코드를 통해 DB와 연동해보자. 

    1) 먼저 import java.sql.*;로 임포트해준다.

    2) 연동만 확인하기 위해선 드라이버를 객체화 하고 DB와의 연결 코드만 작성해주면 된다.

    import java.sql.*;
    
    class JDBCTest{
    	public static void main(String[] args){
        	try{
            	String url = "jdbc:oracle:thin:@localhost:1521:XE";
                	string user = "scott", pwd = "****"; // 각자 DB 패스워드 입력
            	
            	// 1. 오라클 드라이버 로딩
            	Class.forName("oracle.jdbc.driver.OracleDriver");
                	System.out.println("Driver Loading Success!!"); // 연결 됐는지 콘솔에 출력
            	// 2. DB와 연결
            	Connection con = DriverManger.getConnection(url, user, pwd);
            	
                // 전제조건 db서버 연결되어 있어야 한다.
    		System.out.println("DB 연결 성공!!");
                // url이 오타가 나면 출력되지 않는다.
                
            } catch(ClassNotFoundException e){
            	System.out.println("드라이버 연동 실패");
                	e.printStackTrace(); // 예외 추적
            } catch(SQLException e) {
            	e.printStackTrace();
            }
            // 5. 연결 종료
            con.close();
            
        }
    }

    1) 드라이버 로딩을 한다.

    2) Connection 객체를 생성하고 DriverManger.getConnection()의 매개변수로 url, id, password를 넣어준다.

    위 코드와 같이 url, user, pwd를 변수로 만들어주고 넣어주는게 편리하다.

    3) Connection 객체를 생성하고 연결할 때 ClassnotFoundException 예외가 발생하기 때문에 try ~ catch로 잡아준다.

    4) 연결 종료를 위해 Connection 객체 변수에  con.close()를 작성한다.

     

    출력 - 연동 성공

    Driver Loading Success!!
    DB 연결 성공!!
    

    출력 - 연동 실패

    Driver Loading Success!!
    java.sql.SQLException: No suitable driver found for jdbcs:oracle:thin:@localhost:1521:XE
    	at java.sql.DriverManager.getConnection(DriverManager.java:689)
    	at java.sql.DriverManager.getConnection(DriverManager.java:247)
    	at jdbc.day01.JDBCTest.main(JDBCTest.java:26)
    

    위 상황은 드라이버 로딩은 성공했지만 DB와의 연동에서 예외가 발생하게 된 상황이다.

     

    url이나, user id, pwd를 틀리게 작성하면 위와같이 SQLException이 발생한다. 

    우리는 e.printStackTrace() 를 작성했기 때문에 어디서 예외가 발생했는지 확인할 수 있다.

    url에 jdbc:oracle:thin ~ 으로 작성해야 하는데 jdbcs로 작성해서 연동이 실패하게 된 것이다.

    url과 id, password를 잘 입력했는지 꼭 확인하자.

     

     

     

    댓글

Designed by Tistory.