(JDBC) JDBC 기본코드의 이해

Jayden·2023년 4월 4일

JDBC

목록 보기
5/6

1단계 : JDBC 객체 참조 변수 선언

Connection conn = null;
  • DB연결 정보를 담는 객체, 이 정보를 이용해 Java-DB 연결 통로 생성
    Connection을 상속 받아 구현한 자식 객체가 대입될 예정

  • DBMS 이름, 타입, IP, PORT, 계정명, 비밀번호 저장
    DBeaver의 계정 접속 방법 추가와 유사함

  • 왜 Connection은 인터페이스일까??
    DBMS마다 연결 정보, 방법이 다르기 때문에
    상속을 받아 공통된 부분을 DBMS 마다 알맞게 구현하고
    구현된 객체를 Java에서 참조해서 사용

Statement stmt = null;
  • sql을 DB에 전달해 수행하고 (DBMS로 작성한 쿼리문을 실행)
    결과(ResultSet 또는 DML 성공 행의 개수)를 반환 받는데 사용되는 객체
ResultSet rs = null;
  • SELECT 수행 결과를 저장하는 객체

  • 조회 결과의 집합을 나타냄
    테이블 모양으로 반환됨
    ResultSet 객체를 이용해서 1행씩 접근
    더 이상 접근할 행이 없을 경우 false 반환

2단계 : 1단계에서 선언한 참조 변수에 알맞은 객체 대입

  1. DB 연결에 필요한 Oracle JDBC Driver 객체를 메모리에 로드하기
    -> OracleDriver.class를 객체로 만들어두기
Class.forName("oracle.jdbc.driver.OracleDriver");

-> () 작성된 경로에 존재하는 클래스를 이용해 객체를 생성
-> 메모리에 객체가 생성되고 Connection을 이용한 DB 연결시 
   이를 자동으로 참조한다.
  1. DB 연결 정보를 담은 Connection 객체 생성
    -> DriverManager를 이용해서 생성함!
**DB 연결을 위한 정보를 변수에 저장**
tring type = "jdbc:oracle:thin:@"; // 드라이버 종류
			
String ip = "115.90.212.**";						
String port = ":**00"; // 컴퓨터 내 응용프로그램 번호 
String dbName = ":**";
String user = "**_***";
String pw = "oracle_**";
**DriverManager 객체**

- 메모리에 로드된 JDBC드라이버 객체를 이용해 DB에 접근하고 
작성된 정보를 이용해 DB와 연결 가능한 
Connection 객체를 만들어 얻어오는 역할을 하는 객체

// Connection (통로) 생성 -> SQLException 발생 가능성이 있음
conn = DriverManager.getConnection(type+ip+port+dbName,user,pw);

3단계 : SQL 작성 및 작성한 쿼리문 실행 & 결과 반환받기

String sql = "SELECT EMP_ID, EMP_NAME, SALARY, HIRE_DATE FROM EMPLOYEE";
			
			// 4. Statement 객체 생성
			// -> DB에 SQL 전달 후 수행 -> 결과를 반환 받음
			// ---> Connection 내부에 생성되어 DB와 통신하는 역할
			stmt = conn.createStatement();
			
			// 5. Statement 객체를 통해 SQL(SELECT)을 수행하고
			// 	  결과(ResultSet)를 반환 받아와서 저장(rs)
			rs = stmt.executeQuery(sql);
			
			// executeQuery() : SELECT문을 수행하는 메서드
			//					결과로 ResultSet 반환
			
			// 3단계 : SQL 수행 결과로 반환 받은 ResultSet을
			// 첫 번째 행부터 1행씩 접근하여 컬럼 값을 얻어와 출력
			
			while(rs.next()) {
				// 조건식의 결과가 true일때 수행(반복)
				
				// rs.next()
				// - ResultSet 객체는 조회 결과를 한번에 테이블로 다루는 것이 아닌 
				//   커서라는 것을 이용해서 1행씩만 접근
				// - 커서를 다음 행으로 이동 후
				//   행이 존재하면 true, 없으면 false 반환
				
				// ** 현재 접근한 행의 컬럼 값을 얻어와 출력 **
				// rs.get자료형(컬럼명|컬럼순서);
				
				// [Java]			[DB]
				// Strong 			CHAR, VARCHAR2
				// int, long		NUMBER(정수만)
				// float, double    NUMBER(실수만)
				// java.sql.Date	DATE	
				
				String empId = rs.getString("EMP_ID");
				// 현재 커서가 접근한 행의 "EMP_ID" 컬럼의 값을 얻어와ㅓㅅ
				// String으로 반환한다.
				
				String empName = rs.getString("EMP_NAME");
				
				int salary = rs.getInt("SALARY");
				
				Date hireDate =  rs.getDate("HIRE_DATE");
				
				System.out.printf("사번 : %s / 이름 : %s / 급여 : %d / 입사일 : %s \n", empId,empName,salary,hireDate.toString());
			}

0개의 댓글