Rumah  >  Artikel  >  pangkalan data  >  Apakah CallableStatement dalam JDBC?

Apakah CallableStatement dalam JDBC?

PHPz
PHPzke hadapan
2023-09-07 23:53:02897semak imbas

Antara muka

JDBC 中的 CallableStatement 是什么?

CallableStatement menyediakan kaedah untuk melaksanakan prosedur tersimpan. Oleh kerana API JDBC menyediakan sintaks melarikan diri SQL prosedur tersimpan, anda boleh memanggil prosedur tersimpan dalam satu cara standard untuk semua RDBMS.

Mencipta CallableStatement

Anda boleh mencipta CallableStatement (antara muka) menggunakan kaedah prepareCall() antara muka Connection. Kaedah ini menerima pembolehubah rentetan yang mewakili pertanyaan untuk memanggil prosedur tersimpan dan mengembalikan objek CallableStatement.

Pernyataan boleh panggil boleh mempunyai parameter input, parameter output atau kedua-duanya. Untuk menghantar parameter input kepada panggilan prosedur, anda boleh menggunakan ruang letak dan tetapkan nilai untuk parameter ini menggunakan kaedah penetap (setInt(), setString(), setFloat()) yang disediakan oleh antara muka CallableStatement.

Dengan mengandaikan anda mempunyai prosedur yang dipanggil myProcedure dalam pangkalan data anda, anda boleh menyediakan pernyataan boleh panggil seperti ini:

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

Tetapkan nilai untuk parameter input

Anda boleh menggunakan kaedah penetap untuk menetapkan nilai untuk parameter input sesuatu panggilan prosedur.

Mereka menerima dua parameter, satu daripadanya ialah nilai integer yang mewakili indeks penempatan parameter input, satu lagi ialah int atau, String atau, apungan, dsb... mewakili nilai yang anda perlu luluskan Masukkan parameter ke dalam proses.

Nota: Selain indeks, anda juga boleh menghantar nama parameter dalam format rentetan.

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

Melaksanakan Pernyataan Boleh Panggil

Selepas mencipta objek CallableStatement, anda boleh menggunakan salah satu kaedah execute() untuk melaksanakannya.

cstmt.execute();

Contoh

Andaikan terdapat jadual bernama Pekerja dalam pangkalan data MySQL yang mengandungi data berikut:

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

Kami mencipta prosedur bernama myProcedure untuk memasukkan nilai ke dalam jadual seperti berikut:

Below is

contoh JDBC yang menggunakan pernyataan boleh panggil untuk memanggil prosedur yang dibuat di atas untuk memasukkan rekod baharu ke dalam jadual Pekerja.

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 //

Output

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 ....");
   }
}

Jika anda menggunakan pertanyaan pilih untuk mendapatkan semula kandungan jadual Pekerja, anda boleh melihat rekod yang baru ditambah seperti ditunjukkan di bawah:

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

Atas ialah kandungan terperinci Apakah CallableStatement dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam