Study/수업 내용 정리

JDBC1 < 2021-10-06 >

뱅코더 2021. 10. 6. 23:30

목차

  • JDBC란?
  • JDBC 사용 객체
  • JDBC를 활용해 질의 결과 출력

 


 

JDBC

- JDBC(Java DataBase Connectivity)

- Java에서 DB에 접근할 수 있도록 해주는 Java API

- Java에서 DB와 연결하기 위한 인터페이스 , 클래스를 제공 (java.sql 패키지)

- ojdbc : 오라클에서 제공하며, Java와 Oracle DBMS를 연결하기 위한 라이브러리 (클래스 , 코드)

 


JDBC 사용 객체

 

* DriverManager

- 데이터 원본에 JDBC 드라이버를 통해 Connection을 만드는 역할

- Class.forName() 메서드로 생성되고 반드시 예외처리 해야함.

- 직접 객체 생성이 불가능하고 getConnection() 메서드를 이용해서 객체 생성

 

* Connection

- 특정 데이터 원본과 연결된 커넥션을 나타낸다.

- createStatement() 메서드를 호출하여 Statement 객체를 생성함.

- SQL 문장을 실행시키기 전에 우선 Connection 객체가 있어야 한다.

 

* Statement

- Connection 객체를 이용해 리턴되는 객체에 의해서 구현되는 메서드 집합 정의.. (말이 조금 복잡함..)

- 생성된 Statement 객체로 질의문장(SQL문)을 String 객체에 담아 인자로 전달하고

  executeQuery() 메서드를 호출하여 SQL 질의를 수행한다.

 

* ResultSet

- SELECT문을 사용한 질의 성공 시 Result Set 반환

- SQL 질의에 의해 생성된 테이블을 담고있고, 커서로 특정 행에 대한 참조를 조작한다.

 


 

SQL 질의 결과를 출력하는 과정

 

* 예시 코드 / 밑에는 순서 설명

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

public class JDBCPractice {

	public static void main(String[] args) {
		
		Connection conn = null;
		Statement stmt  = null;
		ResultSet rs    = null;
		
		try {	
			
			String driver = "oracle.jdbc.driver.OracleDriver";
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String user = "AA";
			String password = "AA";
			
			Class.forName(driver);
			conn = DriverManager.getConnection(url , user , password);
			stmt = conn.createStatement();
			String sql = "SELECT EMP_ID , EMP_NAME FROM EMPLOYEE";
			rs = stmt.executeQuery(sql);
			
			while(rs.next()) {
				String empNo = rs.getString("EMP_ID");
				String empName = rs.getString("EMP_NAME");
				System.out.printf("사번 : %s / 이름 : %s \n", empNo, empName);
			}
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {	// 자원 반환
			try {
				if(rs != null) rs.close();
				if(stmt != null) stmt.close();
				if(conn != null) conn.close();
			}catch(SQLException e) {
				e.printStackTrace();
			}
		} // try - catch - finally END
	} 
}

 

  1.  JDBC 객체 참조 변수를 선언한다.
  2.  DriverManager에 해당 DBMS의 Driver를 등록한다.
  3.  Driver로부터 Connection 객체를 얻어온다.
  4.  SQL 결과를 반환 받을 Statement 객체를 생성한다.
  5.  DB에 전달할 SQL 구문을 작성한다.
  6.  Statement 객체에 SQL(SELECT)를 담아 DB에서 수행한 결과(Result Set)를 받아와 ResultSet 변수에 저장한다.
  7.  조회 결과가 있는 경우 커서를 통해 순서대로 행에 접근한다.
  8.  .get[Type]("컬럼명") 메서드를 이용하여 컬럼 값을 가져온다. ( [Type]의 자료형은 Java기준 )
  9.  사용했던 JDBC 객체의 자원을 반환한다. ( close() 메서드 이용 )

 

* 4번과 5번 순서는 누가 먼저와도 상관없을듯?? 하다.

 

* 9번

- 자원을 반환할 경우 사용했던 객체의 역순으로 close한다.

-  close() 전에 null 여부를 검사한다.