노무현 대통령 배너

080722--5-

080722--6-  (쿼리)  080722--7-


emp 테이블과 dept 테이블에서

부서명, 사원번호, 사원명, 관리자명을 출력하시오...

사용자 지정 4




ResultSet 은 출력된 결과를 가지고 있는 집합이다.

resultset

데이타는 first 와 last 사이에 존재한다.

ResultSet 을 처음 만들어내면, 커서는 before first 에 위치하고,

위에서 rs.next()  하여 next 메소드를 호출했는데 이 next 메소드에 의해서 커서는 한칸씩 아래로 이동하게 된다...

first 부터 last 까지의 각행에는 당연하지만 데이터가 들어있다..

어떤 데이터? 우리가 select 문에서 뽑아내려는 데이터

여기서는 부서명, 사원번호, 사원명, 관리자명이 들어있는거다.

커서가 특정행에 있으면 그 행의 데이터를 하나씩 빼올 수 있다.

next 메소드가 호출되었을때 다음 값이 있으면 true 값을 리턴한다.

이동하고 true 리턴하고 이동하고 true리턴하고...

그러다가 맨마지막 after last 에 도착을 하면 false 값을 리턴한다.

그러니까 while 문이 돌때 next 에 의해서 리턴되는 값에 따라서

값이 있으면 돌다가 마지막에 after last 에서 false 값이 리턴되니까

while 문을 빠져나오는거다.


값을 가져올때 index 또는 별칭을 이용해서 가져 올 수 있다.

(index ... 오라클은 숫자가 1부터 시작하므로... 첫번째 컬럼의 값을 가져오려면... rs.getString(1); 하면 됨)


가져오는 데이터 타입을 정해야할터인데...

java 에서는 string이지만... 오라클에서는 모든것.

문자열로 표현되지 않는 데이터는 없다. (심지어 그림도)

그러므로 컬럼의 데이터를 가져올수 있는건 getString 이다.

그러나 가져온다하더라도 데이터를 가공하려면 또 변환을 해주어야하는 불편함이 있으므로

getDate, getClob, getDouble 들의 메소들이 존재한다. (api 문서 참조)

근데 오라클에서 소수점이 없는 number 타입은 기본적으로 int 로 받으면된다...

getInt 를 사용하면 된다.

아무튼 get~~~ 메소드들이 많다~


close... 중요하다면 중요할 수도 있는건데...

close 를 안해주면!!  db가 죽을수도 있다!!

커넥션을 반환을 못하니까!!! 계속 생성만 하다가 db가 뻗어버림!!


닫는 순서는.... 결합은 분해의 역순~ 처럼....

마지막부터 닫아준다.

ResultSet --> Statement --> Connection 순으로 닫아준다.


그냥.. try 절안에다가

rs.close();
stmt.close();
conn.close();

해버리면...

try 절안에서 exception 이 발생해버리면 close 안하고 그냥 catch 절로 넘어가 버린다.

close 해주나 마나!!

close는 어찌 되었건 실행이 되어야하는데....

어찌되었건 실행이 되는 놈이 무어냐?!

finally!!

finally 절은 어찌되었건  실행되므로 close 는 finally 절에 넣어준다!!

close는 exception 을 던지고 있으니까 try/catch 로 묶어준다.

그냥 rs.close(); 이런식으로 하면...

위에서 초기화를 null 로 다 해줬는데... try 절에서 exception 이 발생한다면!

catch 절에서 에러메시지 뿌려주고~

finally 절로 넘어가는데...  null 인상태에서  close 를 하려고 하니까

null point excepion 이 발생하면서 프로그램이 종료 되어버린다.

그러므로~

if(rs != null) rs.close(); 요런식으로

null 이 아닐때  닫아주세요~ 라고 해주어야한다!!


여기까지가 제대로된 기본적인 jdbc 문장 이다.

크리에이티브 커먼즈 라이센스
Creative Commons License

"JDBC" 카테고리의 다른 글


이 글의 관련글
2008/12/02 08:36 2008/12/02 08:36

트랙백을 보내세요

트랙백 주소 :: http://pippen80.cafe24.com/trackback/130

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)