Antara muka
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.
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(?, ?, ?)}");
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");
Selepas mencipta objek CallableStatement, anda boleh menggunakan salah satu kaedah execute() untuk melaksanakannya.
cstmt.execute();
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 iscontoh 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 //
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!