Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

꺄르륵

[Java] Eclipse Kepler - DB, Java 연동하기 (JDBC) 본문

프로그래밍/Java

[Java] Eclipse Kepler - DB, Java 연동하기 (JDBC)

Teddy. 2019. 10. 17. 15:31

ojdbc6.jar
2.05MB

JARs 파일 추가후 작업해줍니다.

 

데이터베이스(DB) 처리 순서

JDBC ? Java DataBase Connectivity - 자바-db 연동 


==========================================
                            자바-DB 연동 순서 
==========================================

1. 드라이버 로딩 -> JDBC라이브러리를 JVM 메모리에 로딩한다.
   Class.forName("oracle.jdbc.driver.OracleDriver");
   
2. DB에 접속하기  -> DB에 접속이 성공하면 Connection객체가 생성된다.
   DriverManager.getConnection() 메서드를 이용한다.
   
3. 처리할 SQL 명령을 DB에 전달할 객체를 생성한 후 SQL명령을 DB에 전달하여 처리한다.
   (Statement 객체 또는 preparedStatement 객체를 이용하여 처리한다.)
   (Statement 객체와 PraparedStatement 객체는 Connection 객체를 이용하여 생성할 수 있다.)

4. SQL문의 처리 결과를 받아서 프로그램 용도에 맞게 사용한다.
  1) SQL문이 'SELECT'일 경우    -> ResultSet객체가 만들어진다.
     ResultSet 객체에는 select한 결과가 저장된다.
  2) SQL문이 'SELECT'가 아닐 경우 (UPDATE, DELETE, INSERT 등일 경우)
     --> 정수값이 반환된다. (정수값은 보통 처리한 레코드 수를 의미한다.)

5. 자원을 반납한다.        

package basic;

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

public class JdbcTest01 {
	public static void main(String[] args) {
		
		// DB작업에 필요한 객체변수 선언
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null; // 쿼리문이 SELECT문일 경우 필요하다.
		
		String driver = "oracle.jdbc.driver.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		//String url = "jdbc:oracle:thin:@/*DB주소*/:/*포트번호*/:/*SID*/";
		String user = "ljm";
		String password = "java";
		
		try {
			// 1. 드라이버 로딩
			Class.forName(driver);
			System.out.println("jdbc driver 로딩 성공");
			
			// 2. DB에 접속하기
			conn = DriverManager.getConnection(url, user, password);
			System.out.println("오라클 연결 성공");
			
			// 3. 처리할 SQL문 작성
			String sql = "SELECT * FROM EMPLOYEES";
			//String sql = "/*SQL DEVELOPER에서 작성한 쿼리 내용을 입력해준다.*/";
			
			// 4. Statement 객체 또는 PraparedStatement 객체를 생성한다.
			stmt = conn.createStatement();
			
			// 5. SQL문을 DB에 전달해서 실행한 후 결과를 받아온다.
			rs = stmt.executeQuery(sql);
			//rs = stmt.executeQuery(/*처리할 SQL 문장*/);
			
			
			// 6. ResultSet 객체에 저장된 데이터를 반복문을 이용하여 차례로 꺼내온다.
			
			while(rs.next()){
				// re.next() -> ResultSet 객체에 저장된 데이터를 가리키는 포인터를 다음 레코드로 이동시키고 
                //                        그 곳에 데이터가 있으면 true, 없으면 false를 반환한다.
				
				// ResultSet객체의 포인터가 가리키고 있는 레코드의 각 컬럼값을 읽어오는 방법
				// 읽어오는 방법
				// 방법 1) rs.get자료형이름("컬렴명");
				// 방법 2) rs.get자료형이름("컬럼의엘리어스명(별칭)");
				// 방법 3) rs.get자료형이름(컬럼의 순번); // 컬럼의 순번은 1번부터 시작한다.
				System.out.println("EMPLOYEE_ID : " + rs.getInt("EMPLOYEE_ID"));
				System.out.println("EMP_NAME : " + rs.getString(2));
				System.out.println("CREATE_DATE : " + rs.getDate("CREATE_DATE"));
				System.out.println("--------------------------------------------------");
			}
			
			
		} catch (ClassNotFoundException e) {
			System.out.println("jdbc driver 로딩 실패");
		} catch (SQLException e) {
			System.out.println("오라클 연결 실패");
		} finally {
			// 사용했던 자원을 반납한다. 사용했던 순서 반대로 반납한다.
			if(rs != null) try { rs.close(); } catch (SQLException e) {}
			if(stmt != null) try { stmt.close(); } catch (SQLException e) {}
			if(conn != null) try { conn.close(); } catch (SQLException e) {}
		}

	}

}