japanese site
온라인강좌책메일다운로드동아리쇼핑기술지원기업정보갤러리동영상 블로그
『신개념 4단계 리눅스기술지원 시스템 공개』

※ 『무료 리눅스 배포판 배송서비스』 ※

 
CallableStatement 사용하기
조회 : 3,489  


kenu
2001-11-06 4:28오전


실행환경
Windows XP english Version build 2600
jdk 1.3.1_01
apache 1.3.22
Tomcat 4.0.1
Oracle 8.1.5



Procedure 사용하기(http://okjsp.pe.kr/lecture/lec03/procedure01.xml)에 이은 강좌입니다. JSP 에서 oracle 로 쿼리를 여러 번 날리지 않아도 되기 위해서 만든 Procedure 를 jsp 에서 부르는 방법입니다. 일단 소스를 보십시오.

move.jsp
<%@ page contentType="text/html;charset=euc-kr" import="java.sql.*" %><%
String mseq = request.getParameter("mseq");
String tbbs = request.getParameter("tbbs");
if (mseq==null||tbbs==null) {
%>mseq와 tbbs값이 필요합니다.<%
return; // stop
}
 
String DB_URL = "jdbc:oracle:thin:@localhost:1521:okjspdb";
String DB_USER = "scott";
String DB_PASSWORD= "tiger";
 
Connection conn=null;
CallableStatement cstmt=null;
 
String query = "{call PROC_KBOARD_MOVE(?,?)}";
try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
        
        cstmt = conn.prepareCall(query);
        cstmt.setString(1, mseq);
        cstmt.setString(2, tbbs);
        
        cstmt.executeUpdate();
%>실행되었습니다.<%
} catch(Exception e){
        out.println(e.getMessage());
} finally {
        cstmt.close();
        conn.close();
}
%>



가장 중요한 부분은 아래 부분입니다. CallableStatement 를 사용하기 위한 핵심코드죠. 얼핏 보면 PreparedStatement 랑 흡사합니다. 그도 그럴 수 밖에 없는 것이 API 에서 java.sql.* 에 있는 CallableStatement 를 찾아보면 PreparedStatement 를 상속받은 것을 보실 수 있습니다. 특징적인 메소드는 prepareCall() 입니다. .setString() 은 PreparedStatement 의 것과 같죠. ^^;

핵심부분
...
CallableStatement cstmt=null;
...
String query = "{call PROC_KBOARD_MOVE(?,?)}";
...     
        cstmt = conn.prepareCall(query);
        cstmt.setString(1, mseq);
        cstmt.setString(2, tbbs);
        
        cstmt.executeUpdate();
...



이 소스에 의문을 가지신 분도 있을 겁니다. "mseq는 int로 처리를 해야되는 것 아니냐?", "이 소스 돌아가냐?" 물으신다면, 웃지요. 헐헐~. 소스는 제가 직접 돌려 본 것입니다. 적어도 제가 실행할 때 에러는 다 잡은 것입니다. "그럼 내 PC 에서는 안돌아가냐... 돌아버리겠다..." 하시는 분들은... 삼가 조의를 표하면서 제 강좌를 처음부터 다시 해보시기 바랍니다. 터미널서비스나, pcAnyWhere, telnet 을 열어주신다면 들어가서 제가 해볼 수 있는대로 도와드리고 싶군요. ###### 다시 본론으로 돌아와서 설명 드리겠습니다. jdbc 드라이버와 DB 사이에서 주고받는 값들은 String 이라고 합니다. 대신 jsp와 method를 통해서 들어온 값들을 type 에 맞게 jdbc driver 내부적으로 처리한다고 합니다. 때문에 프로그램 내부에서 값의 변동이 없는 수 등은 그냥 String 으로 받아서 처리해도 크게 문제될 것 없다고 생각됩니다. 혹시 jdbc 에 정통하신 분께서 보신다면 감평부탁합니다. 제가 잘못 전달하면 큰 일이니까요.


위 소스에서 몇가지 팁이 있는데요. ASP 의 Response.End 구문은 break 포인터로 역할을 톡톡히 합니다. 실행하다 중간에 멈추고 이후의 것들은 실행되지 않게 하는 것이죠. jsp 에서는 return 이 유사한 역할을 합니다. jsp 가 servlet 으로 바뀌면서 소스의 중간에 return 을 만나면 메소드 등을 빠져나와 버리기 때문이죠. 위의 if (mseq==null||tbbs==null) 을 넣어준 이유는 error를 미연에 방지하려는 것입니다. NullPointerException 이 발생할 여지를 남겨 두지 않는 것이죠.


멀게만 느껴지는 jsp를 가깝게 느껴지려면 얼마나 시간이 걸릴까요? 저도 2000년 9월에 시작했으니 2001년 11월인 현재 1년이 넘었군요. 책을 써보고 싶은 충동도 있고 한데, 아직 사이트를 보면 멀었습니다. 소원이 있다면 헤헤 "돈 많이 벌고, 부족함 없이 되는 것입니다." 가난은 죄가 아니다. 다만 불편한 것 뿐이다. 라는 말이 있지만, 전 불편한 거 싫거든요. 지금은 연봉만 바라보고 삽니다. 좋은 친구 덕에 지금은 2800백만원 받고 있습니다. 가끔 아르바이트도 합니다만 힘들구요. 참고로 전 84년(중1)부터 프로그래밍했습니다.(apple 컴퓨터에서 basic과 어셈블리어로 프로그램짜고 했습니다.) 그동안 진로때문에 헤매느라 많이 쉬긴 했죠. 하지만, 웹개발자로 나선지는 5년 되었습니다. 평생 내가 해야할 일이라고 생각하고 있습니다. 그리고, 이게 가장 재미있구요. 아내에게 미안한 말이지만 sex 만큼 재미있습니다.(좀 야했나... ^^ 헤헤) 끝에 사설이 길었군요. 하여간 여러분 힘 내시고, JSP 잘 배우시기 바랍니다. 좋은 하루 되세요.


참고문서
about JDBC, 손우상, 영진출판사



관련 사이트


http://okjsp.pe.kr


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=634


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
(주) 수퍼유저

 
   
 


『신개념 4단계 리눅스기술지원 시스템 공개』

CentOS 리눅스 전문서적 국내최초출시

 
회사소개 | 보도기사 | 채용안내 | 광고안내 | 이용약관 | 개인정보취급방침 | 책임한계와 법적고지 | 불편사항 신고하기 | 사이트맵
ㅇ 서울 : 서울특별시 강남구 노현로79길 66, 402호(역삼동,청송빌딩)  ㅇ 부산 : 부산광역시 해운대구 우동 1470 에이스하이테크21 914호
ㅇ 대표 : 1544-8128 ㅇ부산직통 : 051-744-0077 ㅇ서울직통 : 02-856-0055 ㅇ FAX : 02-6280-2663
ㅇ 사업자번호 : 128-86-68239 ㅇ 통신판매업 신고번호 : 2013-부산금정-0035호 ㅇ 개인정보책임자 : 이재석
ㅇ 상호명 : (주) 수퍼유저 ㅇ 대표자 : 박성수
Copyright ⓒ (주)수퍼유저. All rights reserved.

 아 이 디
 비밀번호
회원 가입 | 비밀번호 찾기

블로그~
 
▷ 웹개발언어
PHP
JSP
python
기타
책제목
리눅스서버관리실무바이블v3.0


저자 박성수
페이지수 2,032 pages
펴낸곳(주)수퍼유저

리눅스 서버 구축 및 관리에 필요한 거의 모든 부분과 전반적인 실무 기법들을 다루고 있음
책제목
리눅스보안관리실무(2/E)


저자홍석범
페이지수 820 pages
펴낸곳(주)수퍼유저

리눅스 보안에 관련된 내용을 종합적으로 쓴 책. 저자의 명성 그대로 보안관련의 모든 내용이 그대로 담겨져 있다.