반응형

JDBC 객체 종류

Connection DB의 연결정보를 담고 있는 객체(IP주소, PORT번호, 계정아이디, 비밀번호)
(Prepared)Statement 해당 DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체
ResultSet SELECT문 실행 시 조회된 결과들이 담겨있는 객체

 

JDBC 처리 순서

  1. JDBC Driver 등록 : 해당 DBMS가 제공하는 클래스 등록
  2. Connection 생성 : 접속하고자 하는 DB에 정보를 입력해서 DB에 접속하면서 생성
  3. Statement 생성 : Connection 객체를 이용하여 생성
  4. SQL문을 전달하면서 실행 : Statement 객체를 이용해서 SQL문을 실행
         - SELECT문일 경우 excuteQuery()메소드를 이용하여 실행
         - 나머지 DML문일 경우 excuteUpdate()메소드를 이용하여 실행
  5. 결과 받기
  6. SELECT문일 경우
      1) ResultSet객체(조회된 데이터가 담겨있음)로 받는다
      2) ResultSet객체에 담긴 데이터들을 하나씩 뽑아서 VO 객체에 담기(ArrayList로 묶어서 관리하기)
    DML문일 경우
      1) 나머지 DML문일 경우 - int형 변수(처리된 행 개수)로 받기
      2) 트랜잭션 처리(성공시 COMMIT; 실패시 ROLLBACK;)
  7. 사용완료한 JDBC용 객체들 자원 반납(close) -> 생성의 역순으로 진행

 

INSERT문 코드 예시 → 처리된 행수(int) 결과를 반환하는 경우

//결과(처리된 행수)를 받아놓을 변수
int result = 0;

//DB에 연결정보를 보관할 객체
Connection conn = null;
//sql문 전달하여 실행후 결과 객체
Statement stmt = null; 

//실행할 sql문 작성
String sql="INSERT INTO TEST VALUES(1,'김일등',SYSDATE)";

try {
    //1.JDBC DRIVER 등록
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //2.Connection 객체 생성 : DB에 연결
    conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");
    //3.Statement 객체 생성 : connection 객체를 이용하여 연결
    stmt = conn.createStatement();
    //4,5. SQL문 전달하고 실행 후 결과(처리된 행수) 받기
    result = stmt.excuteUpdate(sql);
    //6.트랜잭션처리
    if(result>0) {
    	conn.commit();
    }else {
    	conn.rollback();
    }
    } catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	}finally {
    //7)사용한 객체들 반납하기(생성 역순)
		try {
			stmt.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	if(result>0) {
		System.out.println("성공적으로 삽입되었습니다");
	}else {
		System.out.println("데이터 삽입에 실패하였습니다.");
	}
}

 

SELECT문 코드 예시

//필요한 변수 세팅
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
		
//실행할 sql문
String sql = "SELECT*FROM TEST";
		


try {
//1)드라이버 등록
    Class.forName("oracle.jdbc.driver.OracleDriver");
				
//2)Connection 객체 생성
 	   conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","JDBC","JDBC");

//3)Statement 객체 생성
    stmt=conn.createStatement();
			
//4,5)sql문 전달후 ResultSet으로 결과 받기
    rset=stmt.executeQuery(sql);

//6)ResultSet에 담긴 데이터 꺼내오기
    //현재 참조하는 rset으로부터 어떤 컬럼에 해당하는 값을 어떤 타입에 담을것인지 제시
    //db의 컬럼명을 제시(대소문자 구분x)
    while(rset.next()) {;//rset데이터 가져오기전에 커서위치를 첫줄로 옮기는 용도
        int tno=rset.getInt("TNO"); //TNO에 있는 데이터를 가지고 오곘다
        String tname=rset.getString("TNAME");
        Date tdate=rset.getDate("TDATE");

        System.out.println(tno+","+tname+","+tdate);
    }
				
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
} catch (SQLException e) {
    e.printStackTrace();
}finally {
    try {
        rset.close();
        stmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
반응형

+ Recent posts