Rumah >pangkalan data >tutorial mysql >Bagaimana untuk memanggil prosedur tersimpan menggunakan pernyataan boleh dipanggil dalam tafsiran JDBC?
Anda boleh menggunakan antara muka CallableStatement untuk memanggil prosedur tersimpan SQL. Pernyataan Boleh Panggil boleh mempunyai parameter input, parameter output, atau kedua-duanya.
Anda boleh mencipta objek CallableStatement(antara muka) menggunakan prepareCall() > kaedah antara muka Connection. Kaedah ini menerima pembolehubah rentetan yang mewakili pertanyaan untuk memanggil prosedur tersimpan dan mengembalikan objek CallableStatement.
Andaikan anda mempunyai nama prosedur myProcedure Dalam pangkalan data, anda boleh menyediakan pernyataan boleh panggil:
//Preparing a CallableStatement CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
Kemudian, anda boleh menggunakan kaedah penetap antara muka CallableStatement untuk menetapkan nilai untuk pemegang tempat, dan gunakan execute( ) kaedah untuk melaksanakan pernyataan boleh dipanggil seperti yang ditunjukkan di bawah.
cstmt.setString(1, "Raghav"); cstmt.setInt(2, 3000); cstmt.setString(3, "Hyderabad"); cstmt.execute();
Jika prosedur tidak mempunyai nilai input, anda hanya boleh menyediakan pernyataan boleh panggil dan laksanakannya seperti ini:
CallableStatement cstmt = con.prepareCall("{call myProcedure()}"); cstmt.execute();
Andaikan terdapat jadual bernama Dispatches dalam pangkalan data MySQL yang mengandungi data berikut:
+--------------+------------------+------------------+----------------+ | Product_Name | Date_Of_Dispatch | Time_Of_Dispatch | Location | +--------------+------------------+------------------+----------------+ | KeyBoard | 1970-01-19 | 08:51:36 | Hyderabad | | Earphones | 1970-01-19 | 05:54:28 | Vishakhapatnam | | Mouse | 1970-01-19 | 04:26:38 | Vijayawada | +--------------+------------------+------------------+----------------+
Jika kita mencipta prosedur yang dipanggil myProcedure untuk mendapatkan semula nilai dari jadual ini seperti yang ditunjukkan di bawah:
Create procedure myProcedure () -> BEGIN -> SELECT * FROM Dispatches; -> END //
Berikut ialah contoh JDBC menggunakan program JDBC untuk memanggil prosedur tersimpan di atas.
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class CallingProcedure { 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/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //Preparing a CallableStateement CallableStatement cstmt = con.prepareCall("{call myProcedure()}"); //Retrieving the result ResultSet rs = cstmt.executeQuery(); while(rs.next()) { System.out.println("Product Name: "+rs.getString("Product_Name")); System.out.println("Date of Dispatch: "+rs.getDate("Date_Of_Dispatch")); System.out.println("Time of Dispatch: "+rs.getTime("Time_Of_Dispatch")); System.out.println("Location: "+rs.getString("Location")); System.out.println(); } } }
Connection established...... Product Name: KeyBoard Date of Dispatch: 1970-01-19 Time of Dispatch: 08:51:36 Location: Hyderabad Product Name: Earphones Date of Dispatch: 1970-01-19 Time of Dispatch: 05:54:28 Location: Vishakhapatnam Product Name: Mouse Date of Dispatch: 1970-01-19 Time of Dispatch: 04:26:38 Location: Vijayawada
Atas ialah kandungan terperinci Bagaimana untuk memanggil prosedur tersimpan menggunakan pernyataan boleh dipanggil dalam tafsiran JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!