프로그래밍/JDBC

02 JDBC : Statement 와 PreparedStatement로 QURY 불러오기(SELECT)

pupu91 2022. 8. 26. 14:00
반응형

JDBC를 적용하기 위한 절차

 

1. DBMS등록 (properties 파일 생성)

 

 

 

 

2. Driver로부터 Connection instance 획득

 


Statement 로 SQL 문 실행

 

 

 


 PreparedStatement로 SQL문 실행

 

1. 

 PreparedStatement로 EMPOLYEE에 있는 EMP_ID와 EMP_NAME를 조회해보자.

package com.greedy.section02.preparedstatement;
import static com.greedy.common.JDBCTemplate.*;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Application1 {

	public static void main(String[] args) {
   
     Connection conn = getConnection();
     PreparedStatement pstms = null; //쿼리문을 저장하고 실행하는 기능을 하는 용도의 인터페이스
     ResultSet rset = null; //select 결과 집합을 받아올 용도의 인터페이스
     
     try{	
     		미리 SQL 구문을 준비하는 메소드 이기 때문에 SQL구문을 인자로 전달
     		pstms = conn.preareStatement("SELECT EMP_ID, EMP_NAME FORM EMPLOYEE");
            
            PreparedStatement 객체 생성 시 이미 SQL문을 전달하여 설정해 두었기 
            때문에 실행시에는 SQL문을 전달하지 않은
            rset = pstmt.executQuery();
            
            whil(rset.next()){
            	System.out.println(rset.getString("EMP_ID") + "," + rset.getString("EMP_NAME"));
            }
            
     }
     
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close(rset);
			close(pstmt); preparedStatement는 Statment를 상속하고 있기 때문에 pstmt로 닫아도 오류 없음
			close(conn);
		}
  
  }
 }
 
 출력 결과
201,송종기
202,노옹철
203,송은희
204,유재식
205,정중앙
...

 

 

 

 

PreparedStatement 를 사용하여 사용자가 입력한 값을 통해 출력해보자

public class Application2 {

public static void main(String[] args) {
   
    1. Connection 생성
    Connection conn = getConnection();
   
    PreparedStatement pstmt = null; 
    ResultSet rset = null;
    
    Scanner sc = new Scanner(System.in);
    Sytem.out.print("조회하려는 사번을 입력하세요 : ");
    String empId = sc.nextLine();
    
    쿼리문 내의 변경 되는 입력 값들을 ? (위치홀더) 를 이용해서 표기
    String query =  "SELECT EMP_ID, EMP_NAME FROM EMPLOYEE WHERE EMP_ID= ?";
    
try{
    
    2. PreparedStatement 생성하고 위치 홀더로 표기 되었던 값에 들어가야 하는 값 입력
    pstmt = conn.prepareStatement(query);
    pstmt.setString(1, empId); 
    =>pstmt.setString(index번호, 입력값) index는 1번부터 시작
    
    3. executeQuery()로 쿼리문 실행하고 결과를 ResultSet으로 반환 받음
    rset = pstmt.executeQuery();
    
    4. ResultSet에 담긴 결과 값을 컴럼 이름을 이용해서 꺼내옴
    while(rset.next()) {
		System.out.println(rset.getString("EMP_ID") + ", " + rset.getString("EMP_NAME"));
	}
			
	} catch (SQLException e) {
			e.printStackTrace();
	} finally {
	5. 사용한 자원을 반납한다.
		close(rset);
		close(pstmt);
		close(conn);
	}
  }
 }
출력결과   
조회하려는 사번을 입력해주세요 : 207
207, 하이유

 

 

 

반응형