Tags:

Hướng dẫn sử dụng CallableStatement trong JDBC

CallableStatement được sử dụng để gọi các stored procedures functions trong JDBC. Chúng ta có thể có logic nghiệp vụ trên cơ sở dữ liệu bằng cách sử dụng các stored procedures và function được lưu trữ trên csdl sẽ làm cho hiệu suất tốt hơn vì chúng được biên dịch trước.

Điều kiện tiên quyết

Hầu hết các ứng dụng Java hiện đây đều sử dụng Maven hoặc Gradle cho phép chúng ta dễ dàng quản lý các dependency, build source code etc. Vì vậy trong bài viết này mình sẽ sử dụng project maven để hướng dẫn.

Sau khi tạo project maven thành công, chúng ta cần thêm JDBC dependency tương ứng với cơ sở dữ liệu bạn muốn, ở đây mình sử dụng mysql.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>

Ví dụ gọi Stored procedure

Để gọi stored procedure, bạn cần tạo nó trong cơ sở dữ liệu. Ở đây, giả định rằng stored procedure, được lưu trữ trông như thế này.

create or replace procedure "INSERTR"  
(id IN NUMBER,  
name IN VARCHAR2)  
is  
begin  
insert into user420 values(id,name);  
end;  

Cấu trúc bảng được đưa ra dưới đây

create table user420(id number(10), name varchar2(200));  

Trong ví dụ này, chúng ta sẽ gọi stored procedure được lưu trữ INSERTR nhận id và tên làm tham số và chèn nó vào bảng user420. Lưu ý rằng bạn cũng cần tạo bảng user420 để chạy ứng dụng này.

import java.sql.*;  
public class Proc {  
public static void main(String[] args) throws Exception{  
  
Class.forName("oracle.jdbc.driver.OracleDriver");  
Connection con=DriverManager.getConnection(  
"jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  
  
CallableStatement stmt=con.prepareCall("{call insertR(?,?)}");  
stmt.setInt(1,1011);  
stmt.setString(2,"Amit");  
stmt.execute();  
  
System.out.println("success");  
}  
}  

Ví dụ gọi function trong JDBC

Trong ví dụ này, chúng ta sẽ hàm sum4 nhận hai đầu vào và trả về tổng của một số đã cho. Ở đây, chúng ta đã sử dụng phương thức registerOutParameter của CallableStatement, đăng ký tham số đầu ra với kiểu tương ứng của nó.

Đầu tiên, tạo function sum4 trước.

create or replace function sum4  
(n1 in number,n2 in number)  
return number  
is   
temp number(8);  
begin  
temp :=n1+n2;  
return temp;  
end;  

Bây giờ,  hãy viết chương trình đơn giản để gọi hàm

import java.sql.*;  
  
public class FuncSum {  
public static void main(String[] args) throws Exception{  
  
Class.forName("oracle.jdbc.driver.OracleDriver");  
Connection con=DriverManager.getConnection(  
"jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  
  
CallableStatement stmt=con.prepareCall("{?= call sum4(?,?)}");  
stmt.setInt(2,10);  
stmt.setInt(3,43);  
stmt.registerOutParameter(1,Types.INTEGER);  
stmt.execute();  
  
System.out.println(stmt.getInt(1));  
          
}  
}  
Output: 53

Nguồn

https://www.javatpoint.com/CallableStatement-interface

https://www.tutorialspoint.com/jdbc/callablestatement-object-example.htm

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x