Rumah > pangkalan data > tutorial mysql > Apakah CallableStatement dalam JDBC?

Apakah CallableStatement dalam JDBC?

PHPz
Lepaskan: 2023-09-07 23:53:02
ke hadapan
947 orang telah melayarinya

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(?, ?, ?)}");
Salin selepas log masuk

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");
Salin selepas log masuk

Melaksanakan Pernyataan Boleh Panggil

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

cstmt.execute();
Salin selepas log masuk

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         |
+---------+--------+----------------+
Salin selepas log masuk

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 //
Salin selepas log masuk

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 ....");
   }
}
Salin selepas log masuk

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 ....
Salin selepas log masuk

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

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan