본문 바로가기
IT/Java

자바 JDBC 연결해 출력하기

by flatsun 2019. 5. 12.
반응형

일단 자바에 JDBC를 연결하기 전에 오라클이 설치되어 있어야 하는데

오라클은 이렇게 까세요! 하고 링크를 딱 깔아주면 좋겠지만

 

안타깝게도 오라클 다시 깔기가 귀찮아서 구글에 오라클 설치방법을 검색하면 글이 많이 나오니

거기서 검색해서 깔도록 하자

 

 

이후 오라클이 설치 완료되었으면 프로젝트에 오른쪽 마우스 클릭을 한 뒤

Build Path -> Configure Build Path를 누르자 

 

Libraries 탭으로 바꾸고 Add External JARs를 눌러주자

 

 

이후 ojdbc5 혹은 ojdbc6을 찾아야 하는데

경로를 모르겠다면 스크린샷처럼

내 컴퓨터로 들어간 후 jdbc를 쓰면 경로가 나온다

 

jdbc로 들어가 lib에 있는

ojdbc5 혹은 ojdbc6을 눌러주면 된다

 

ojdbc5와 6의 차이는

1.5버전 1.6버전 이상이고

_g가 붙어있는 것은 

 

javac -g로 컴파일된 클래스들과 contain tracing code 제외인데

봐도 아무 느낌이 안오지 않나

 

그냥 ojdbc6을 고르면 된다

 

이렇게 ojdbc6이 추가가 되었으면 Apply and Close를 누르자

 

이제 ConnectionTest라는 이름으로 클래스 파일을 하나 만들어보자

 

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ConnectionTest {

    public static void main(String[] args) {
    	
    	try {
		Class.forName("oracle.jdbc.driver.OracleDriver");	// 드라이버 로딩
		System.out.println("드라이버 로딩 성공..");

		String sql = "SELECT 'TEST' AS COL1, 10 AS COL2  FROM DUAL ";	// SQL Query
	    	String url = "jdbc:oracle:thin:localhost:1521:SID";
	    	String id = "scott";	// 접속 ID
	    	String pass = "tiger";	// 접속 PW
    	
    		Connection conn = DriverManager.getConnection(url,id,pass);	// 드라이버 접속
		System.out.println("드라이버 접속 성공!");
			
		Statement stmt =  conn.createStatement();
		ResultSet rs =   stmt.executeQuery(sql);	// SQL 수행 후 객체 생성
			
		while(rs.next()) { // ResultSet에 다음 값이 없을때까지 출력
			String Col1 = rs.getString("COL1");	// 컬럼 값 받아오기
			int Col2 = rs.getInt("COL2");
				
			System.out.println("COL1" + " " + "COL2");		// 컬럼명
			System.out.println(Col1 + " " + Col2);
		}
			
		// 연결 끊기
		rs.close();
		stmt.close();
		conn.close();
			
    	} catch (Exception e) {
		e.printStackTrace();
	}
    }

}

 

아 이 븅신같은 티스토리 코드블럭

 

티스토리 개발자들은 테스트도 안해보고 서비스를 오픈하나 보다

띄어쓰기가 개판이라 수동으로 수정해야 되더라

 

어쨌든 이게 jdbc 연결 테스트용 자바 파일인 ConnectionTest 파일인데

 

여기서 봐야 할 포인트는 

 

1. Class.forName("oracle.jdbc.driver.OracleDriver"); 을 통해 JDBC 드라이버를 로딩한다

 

2. 미리 SQL부터 URL, ID, PASSWORD를 작성해 두어야 한다

   실전에서는 이렇게 하면 안되는데 이건 집에서만 할꺼니까 이렇게 해도 된다

     String sql = "SELECT 'TEST' AS COL1, 10 AS COL2  FROM DUAL "; // SQL Query
     String url = "jdbc:oracle:thin:localhost:1521:SID";
     String id = "scott"; // 접속 ID
     String pass = "tiger"; // 접속 PW

 

3. Connection을 통해 DriverManager.getConnection 한 정보를 받아온다

   파라미터에는 위의 작성한 URL, ID, PASS를 차례대로 넣어준다

Connection conn = DriverManager.getConnection(url,id,pass); // 드라이버 접속

 

4. Statement를 통해 특정 쿼리를 수행하고 ResultSet에 수행한 쿼리의 결과를 담는다

Statement stmt =  conn.createStatement();
ResultSet rs =   stmt.executeQuery(sql); // SQL 수행 후 객체 생성

 

5. while(rs.next()) 를 통해 결과를 뽑아낸다

쿼리를 돌리면 한 줄만 나오는 경우는 거의 없다

따라서 모든 줄을 뽑아내기 위해서는 ResultSet.next()를 사용해서 뒤에 결과가 없을 때까지 뽑아낸다

 

while(rs.next()) { // ResultSet에 다음 값이 없을때까지 출력
String Col1 = rs.getString("COL1"); // 컬럼 값 받아오기
int Col2 = rs.getInt("COL2");

System.out.println("COL1" + " " + "COL2"); // 컬럼명
System.out.println(Col1 + " " + Col2);
}

 

결과값을 받을 때에는 getString, getInt를 사용하여 데이터베이스 컬럼에 맞는 타입으로 받아와야 한다

숫자를 String으로 받을 수는 없으니..

 

6. 결과까지 출력하고 나오면 .close를 통해 위의 내용들을 종료해 준다

순서는 실행했던 순서의 반대로 하면 되는데

Connection -> Statement -> ResultSet의 순으로 왔으니


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

반대로 이렇게 close() 시켜주면 된다

 

마지막으로 이클립스에서 작성한 ConnectionTest인데

티스토리 코드블럭이 제대로 작동하는지 확신이 안가서 이것도 첨부한다

 

jdbc는 처음 보면 뭐지 싶지만

순서만 기억하면 그닥 어렵지 않다

 

드라이버를 로딩하고 

Connection을 통해 드라이버에 접속하고

Statement로 쿼리를 수행하고

ResultSet으로 결과를 받아오고

마지막으로 .close()로 닫아주면 된다

반응형

댓글