수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

DB 접속후에 close를 하려고 할 때.

해나

2023.04.01

책을 보면서 공부하고 있습니다.
아래 소스는 zipcode.java에 있는 ResultSet search()메소드 입니다.
search()의 return값(rs)를 받아서 jsp뿌려주려고 합니다.

소스보시면 주석문 해둔 부분이 있습니다.
이렇게 주석 처리(Connection객체와 Statement객체를 close하는 부분)를 하면은 제가 원하는 값이 나옵니다.
하지만 주석문을 없애면(Connection객체와 Statement객체를 close하게 되면)은 에러와 함께 ResultSet is closed 라는 문구가 나옵니다.

Connection객체와 Statement객체를 close하지 않아도 동작은 하지만 close해주고 싶을 때는 어떻게 해야하나요??

---- zipcode.java ------
public ResultSet search(){
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String sql;
try {
Class.forName(driver);
//String url = this.url + ?useUnicode=true&characterEncoding=KSC5601;
con = DriverManager.getConnection(url, zipcode, zipcode);
stmt = con.createStatement();
sql = select * from zipcode;
rs = stmt.executeQuery(sql);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
try {
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
return rs;
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 앵겨쭈

    허거걱^^
    이렇게 많은 답변이^^
    그렇군요 close를 해줘야하는군요^^
    Collection객체에 담아서 보내고 finally에서 close를 해줘야겠군요^^
    모두들 감사드립니다^^

  • 보나

    이런거 질문할때는 에러 로그를 같이 올리면 더 알기 쉽겠죠. 그리고 윗분들 말씀이 맞는거 같네요.

  • 시나브로

    흠...이젠 asp인지.. jsp인지 기억도 안나는..ㅠㅠ
    Wrox의 Oracle관련 서적을 봤던건가... ASP의 ADO를 봤던건가 기억이 애매하긴 하나..
    커넥션을 유지해주는 녀석이 있긴했었는데 너무 오래되서 가물거리네요.
    일반적으로는 RS를 외부에서 받아서 쓰고 싶으시면 Collecton객체에 담아서 보내셔야합니다.
    Connection을 다른곳에서 이용하는 구조라면야 기존 소스의 주석부분을 삭제하시고
    명시적으로 다른곳에서 해제 가능하도록 해 주셔

  • 소심한여자

    저도 공부하는입장이라 잘은 모르지만.윗분처럼하시는게..전 DTO에 담아서 보내는데 마지막에 finally에서 close해주고

  • 세나

    아 한가지 리턴타입을 ResultSet으로 해 놓으시면 다음 단계에서 에러 납니다.
    finally에서 close를 했기 때문에...
    맨 위의 분 말 처럼 다른 객체에 데이터를 담아서 리턴하세요

  • 솔찬

    Connection과 Statement, ResultSet은 사용후에 반드시 close를 해 주어야 합니다.
    Connection을 close 안했을 경우 얼마 안가서 DB Pool이 다 차서(DB Connection Pool을 사용할 경우) 사용할 자원이 없기 때문에 서비스가 안 되는 장애가 발생합니다.
    Connection Pool을 사용을 안 할 경우에도 수 많은 connetion이 맺히기 때문에 DB에 무리를 줘서 결국에는 장애로 이어집니다.
    그리고

  • 일진누나

    List zipList = new ArrayList();
    while ( rs.next()){
    zipList.add( rs.getXXX(..) );
    }
    return List;

    이런 식으로 하고 db 자원 해제는 finally {..} 안에서 하셔야 안전하지요.

  • 피라

    내안의나님 답변 감사드립니다^^
    특별히 끊어주어야 할 이유는 없습니다^^
    코딩습관상 저런게 있으면 찝찝해서요 ㅎㅎ
    좋은 하루 보내세요^^

  • 도래

    한마디로 반환 타입을 바꾸라는 말이죠 ㅎ;

  • 양자리

    저도 초보인지라 틀릴수도 있겠지만....;;
    제 생각을 말씀드리면, 메서드의 반환 타입이 ResultSet이므로 Connection과 Statement를 끊어선 안될겁니다. 그래도 끊고 싶으시다면, select문의 결과물을 ArrayList나 Enumeration등에 넣으신 후 그걸 반환 하신 후에 Connection과 Statement를 종료하시면 되겠지요.

번호 제 목 글쓴이 날짜
2701177 css적용이 안되요~ (6) 다니엘 2025-07-11
2701151 사이트작업시 inputbox 가 readonly 형태표시 어떻게 하시나요? (1) 찬내 2025-07-11
2701123 간단한 select 질문입니다 (3) 천사의눈물 2025-07-11
2701061 비베질문.. 똘끼 2025-07-10
2701034 메일폼 내 script 삽입가능한 방법 없을까요.. (2) 마음새 2025-07-10
2701008 분명히 버튼을 만들었는데 액션이 안걸립니다. (3) 재찬 2025-07-10
2700923 전체중앙정렬&독타입&쿼크모드 ㅜㅠ (8) 푸른들 2025-07-09
2700893 질문드리겠습니다. 도도한 2025-07-09
2700793 무비클립에 마우스 오버시 랜덤으로 효과음 나기는 어떻게 ;; (1) 바닐라 2025-07-08
2700741 웹전송? (2) 연와인 2025-07-07
2700686 카테고리 호버시 세부카테고리 보이게하는 것, css로만 가능할까요?? (3) 다힘 2025-07-07
2700658 메타태그 질문드립니다..ㅠㅠ;;; 모해 2025-07-07
2700632 외부에서 이미지 파일을 불러와야 합니다. 도와주세요. (4) 에일린 2025-07-06
2700579 (air + as3) smtp 이용해서 첨부파일 포함해서 메일 보내기 물보라 2025-07-06
2700524 클릭시 밑에 메뉴 나오게 (4) 새솔 2025-07-05
2700505 activex를 비쥬얼6.0으로 만들었는데요 비스타 배포시에 안되서 질문드립니다 (3) 참이 2025-07-05
2700452 c언어에서... 자료형 구분.... (3) 시내 2025-07-05
2700422 버전에 관해 질문 라온제나 2025-07-04
2700393 mysql이 갑자기!!!!!!!!!!!!!!!에러가;; (2) 소미 2025-07-04
2700359 3.0 ) SimpleButton 상태 강제 변경 (3) 희선 2025-07-04
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com