CallableStatement 실습
CallableStatement 를 활용한 SQL 구문 전송 실습
package com.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.util.Scanner;
import com.util.DBConn;
public class Test001
{
public static void main(String[] args)
{
try
{
Scanner sc = new Scanner(System.in);
Connection conn = DBConn.getConnection();
do
{
System.out.print("이름 입력(-1 종료) : ");
String name = sc.next();
if (name.equals("-1"))
break;
System.out.print("전화번호 입력 : ");
String tel = sc.next();
if (conn != null)
{
System.out.println("데이터베이스 연결 성공");
try
{
// preparedStatement 처럼 쿼리문이 먼저 준비되어야 작업객체를 생성할 수 있다. check!
String sql = "{call PRC_MEMBERINSERT(?, ?)}"; // 넘겨주어야하는 매개변수의 갯수만큼 『?』를 써줌
// CallableStatement 작업 객체 생성 check!
CallableStatement cstmt = conn.prepareCall(sql);
// 매개변수 전달
cstmt.setString(1, name);
cstmt.setString(2, tel);
int result = cstmt.executeUpdate(); // 이 프로시저는 INSERT가 발생하는 프로시저 이므로 executeUpdate => 적용된 행의 갯수 int 반환
if (result > 0)
System.out.println("프로시저 호출 및 데이터 입력 완료!!!");
} catch (Exception e)
{
System.out.println(e.toString());
}
}
} while (true);
DBConn.close();
System.out.println("\n데이터베이스 연결 종료");
System.out.println("프로그램 종료됨");
} catch (Exception e)
{
System.out.println(e.toString());
}
}
}
실습2
package com.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import com.util.DBConn;
import oracle.jdbc.OracleTypes;
public class Test002
{
public static void main(String[] args)
{
try
{
Connection conn = DBConn.getConnection();
if (conn != null)
{
System.out.println("데이터베이스 연결 성공");
try
{
// 쿼리문 준비
String sql = "{call PRC_MEMBERSELECT(?)}"; // ? 에 넘겨주는건 전적으로 프로시저에 의존적이다.
// CallableStatement 작업 객체 생성 check
CallableStatement cstmt = conn.prepareCall(sql);
// check
// 프로시저 내부에서 sys_refcursor 를 사용하고 있기 때문에
// OracleTypes.CURSOR 를 사용하기 위한 등록 과정이 필요한 상황
// 1. Project Explore 상에서 해당 프로젝트 마우스 우클릭
// > Build Path > Configure Build Path > Libraries 탭 선택
// > 우측 add External JARs 버튼 클릭 > 『ojdbc6.jar』 파일 추가하고 Apply and close
// (외부 jar 파일 연결)
// 2. 『import oracle.jdbc.OracleTypes;』 구문 추가 등록
// OracleTypes 는 인텔리센스에서 .internal이 빠진 oracle.jdbc 만 있는 OracleTypes 이다.
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.execute();
ResultSet rs = (ResultSet)cstmt.getObject(1); // Object 타입을 ResultSet 타입으로 다운캐스팅..
while (rs.next())
{
String sid = rs.getString("SID");
String name = rs.getString("NAME");
String tel = rs.getString("TEL");
String str = String.format("%3s %7s %10s", sid, name, tel);
System.out.println(str);
}
rs.close();
cstmt.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
DBConn.close();
System.out.println("\n데이터베이스 연결 닫힘");
System.out.println("프로그램 종료됨");
} catch (Exception e)
{
System.out.println(e.toString());
}
}
}
Author And Source
이 문제에 관하여(CallableStatement 실습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cseon230/CallableStatement-실습저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)