JDBC API 를 통 해 저장 프로 세 스 를 호출 하 는 범례

3019 단어 JavaJDBC창작 생애
  JDBC API      

다음 내용 은 손 위 금 이 쓴 《 자바 네트워크 프로 그래 밍 핵심 기술 상세 해 》 라 는 책의 제1 2 장 을 참고 한다.원본 코드 다운로드 주소:http://lesson.javathinker.net/javanet/javanetsourcecode.rar
java. sql. Callable Statement 인 터 페 이 스 는 데이터베이스 의 저장 과정 을 실행 하 는 데 사 용 됩 니 다.Connection 의 prepareCall () 방법 으로 Callable Statement 대상 을 만 듭 니 다.MySQL 데이터베이스 에 demoSp 라 는 저장 과정 이 있다 고 가정 하면 다음 과 같이 정의 합 니 다.
delimiter  //
CREATE PROCEDURE demoSp(IN inputParam VARCHAR(255), INOUT inOutParam INT)
BEGIN
    DECLARE z INT;
    SET z = inOutParam + 1;
    SET inOutParam = z;

    SELECT CONCAT('hello ', inputParam);
END  //

이상 코드 는 소스 패키지 의 sourcecode / chapter 12 / sql / demoSp. sql 에 있 습 니 다.상기 저장 과정 은 두 개의 매개 변수 가 있 는데 첫 번 째 매개 변 수 는 inputParam 이 VARCHAR 형식 이 고 입력 (IN) 매개 변수 이 며 두 번 째 매개 변 수 는 inOutParam 이 INT 형식 이 며 입 출력 (INOUT) 매개 변수 입 니 다.입 출력 매개 변수 에 대해 호출 자 는 저장 과정 에 매개 변수 값 을 입력 할 수도 있 고 저장 과정 이 끝 난 후에 업 데 이 트 된 매개 변수 값 을 읽 을 수도 있 습 니 다.이 저장 과정 을 어떻게 호출 하 는 지 보 여 줍 니 다.
/ ProcedureTester.java /
import java.sql.*;public class Procedure Tester {public static void main (String args []) throws Exception {/ / 로드 드라이브, 아래 코드 는 MySQL 드라이브 Class. forName ("com. mysql. cj. jdbc. Driver") 을 불 러 옵 니 다.
//       URL,serverTimeZone    
String dbUrl = "jdbc:mysql://localhost:3306/STOREDB"
               + "?serverTimezone=Asia/Shanghai";
String dbUser="dbuser";
String dbPwd="1234";
//       
Connection con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);
//      demoSp     CallableStatement  。
CallableStatement cStmt = con.prepareCall("{call demoSp(?, ?)}");
//         
cStmt.setString(1, "Tom"); //         
//cStmt.setString("inputParam", "Tom"); //       

//          
cStmt.registerOutParameter(2, Types.INTEGER); //         
//       
//cStmt.registerOutParameter("inOutParam", Types.INTEGER);

//         
cStmt.setInt(2, 1); //         
//cStmt.setInt("inOutParam", 1); //       

//      
boolean hadResults = cStmt.execute();

//     
if (hadResults) {
  ResultSet rs = cStmt.getResultSet();
  //SQLExecutor   12.4.4    12-8
  SQLExecutor.showResultSet(rs);
}

//           
int outputValue = cStmt.getInt(2); //         
//int outputValue = cStmt.getInt("inOutParam"); //       

con.close();

}}
Callable Statement 대상 을 만 드 는 코드 는 다음 과 같 습 니 다.CallableStatement cStmt = con.prepareCall("{call demoSp(?, ?)}");
상기 두 개의 물음 표 는 각각 저장 과정의 두 개의 매개 변 수 를 대표 한다.다음 두 가지 방식 으로 매개 변수 에 값 을 부여 할 수 있 습 니 다.
//   :         
cStmt.setString(1, "Tom");
cStmt.setInt(2, 1);

//   :           
cStmt.setString("inputParam", "Tom");
cStmt.setInt("inOutParam", 1);

두 번 째 매개 변 수 는 입 출력 매개 변수 입 니 다. 출력 값 을 얻 기 위해 서 는 Callable Statement 의 registerOutParameter () 방법 으로 매개 변수의 유형 을 등록 한 다음 에 저장 과정 이 실 행 된 후에 해당 하 는 getXXX () 방법 으로 출력 값 을 얻 을 수 있 습 니 다.

좋은 웹페이지 즐겨찾기