>  기사  >  데이터 베이스  >  JDBC의 CallableStatement란 무엇입니까?

JDBC의 CallableStatement란 무엇입니까?

PHPz
PHPz앞으로
2023-09-07 23:53:02896검색

JDBC 中的 CallableStatement 是什么?

CallableStatement 인터페이스는 저장 프로시저를 실행하는 메서드를 제공합니다. JDBC API는 저장 프로시저 SQL 이스케이프 구문을 제공하므로 모든 RDBMS에 대해 단일 표준 방식으로 저장 프로시저를 호출할 수 있습니다.

Creating a CallableStatement

Connection 인터페이스의 prepareCall() 메소드를 사용하여 CallableStatement(인터페이스)를 생성할 수 있습니다. 이 메서드는 저장 프로시저를 호출하기 위한 쿼리를 나타내는 문자열 변수를 받아들이고 CallableStatement 개체를 반환합니다.

호출 가능 문에는 입력 매개변수, 출력 매개변수 또는 둘 다를 가질 수 있습니다. 프로시저 호출에 입력 매개변수를 전달하려면 플레이스홀더를 사용하고 CallableStatement 인터페이스에서 제공하는 setter 메소드(setInt(), setString(), setFloat())를 사용하여 이러한 매개변수에 대한 값을 설정할 수 있습니다.

데이터베이스에 myProcedure라는 프로시저가 있다고 가정하면 다음과 같은 호출 가능 문을 준비할 수 있습니다.

//Preparing a CallableStatement
CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");

입력 매개변수에 대한 값 설정

setter 메서드를 사용하여 입력 매개변수에 대한 값을 설정할 수 있습니다. 절차 호출.

두 개의 매개변수를 허용합니다. 그 중 하나는 입력 매개변수의 배치 색인을 나타내는 정수 값이고, 다른 하나는 전달해야 하는 값을 나타내는 int, String, float 등입니다. 프로세스에 매개변수를 입력합니다.

참고: 색인 외에도 매개변수 이름을 문자열 형식으로 전달할 수도 있습니다.

cstmt.setString(1, "Raghav");
cstmt.setInt(2, 3000);
cstmt.setString(3, "Hyderabad");

콜러블 문 실행

CallableStatement 객체를 생성한 후 execute() 메소드 중 하나를 사용하여 실행할 수 있습니다.

cstmt.execute();

Example

다음 데이터를 포함하는 MySQL 데이터베이스에 Employee라는 테이블이 있다고 가정합니다.

+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+

다음과 같이 테이블에 값을 삽입하기 위해 myProcedure라는 프로시저를 생성합니다.

Create procedure myProcedure (IN name VARCHAR(30), IN sal INT, IN loc VARCHAR(45))
   -> BEGIN
   -> INSERT INTO Employee(Name, Salary, Location) VALUES (name, sal, loc);
   -> END //

아래는 Employee 테이블에 새 레코드를 삽입하기 위해 위에서 생성된 프로시저를 호출하기 위해 호출 가능 문을 사용하는 JDBC 예제입니다.

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class CallableStatementExample {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());

      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/testdb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Preparing a CallableStateement
      CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");

      cstmt.setString(1, "Raghav");
      cstmt.setInt(2, 3000);
      cstmt.setString(3, "Hyderabad");

      cstmt.setString(1, "Kalyan");
      cstmt.setInt(2, 4000);
      cstmt.setString(3, "Vishakhapatnam");

      cstmt.setString(1, "Rukmini");
      cstmt.setInt(2, 5000);
      cstmt.setString(3, "Delhi");

      cstmt.setString(1, "Archana");
      cstmt.setInt(2, 15000);
      cstmt.setString(3, "Mumbai");

      cstmt.execute();
      System.out.println("Rows inserted ....");
   }
}

Output

Connection established......
Rows inserted ....

선택 쿼리를 사용하여 Employee 테이블의 내용을 검색하면 아래와 같이 새로 추가된 레코드를 관찰할 수 있습니다.

mysql> select * from employee;
+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
| Raghav  | 3000   | Hyderabad      |
| Raghav  | 3000   | Hyderabad      |
| Kalyan  | 4000   | Vishakhapatnam |
| Rukmini | 5000   | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+
9 rows in set (0.00 sec)

위 내용은 JDBC의 CallableStatement란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제