집 >데이터 베이스 >MySQL 튜토리얼 >JDBC의 CallableStatement란 무엇입니까?
CallableStatement 인터페이스는 저장 프로시저를 실행하는 메서드를 제공합니다. JDBC API는 저장 프로시저 SQL 이스케이프 구문을 제공하므로 모든 RDBMS에 대해 단일 표준 방식으로 저장 프로시저를 호출할 수 있습니다.
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();
다음 데이터를 포함하는 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 ...."); } }
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!