Rumah >pangkalan data >tutorial mysql >Bagaimana untuk memanggil prosedur tersimpan menggunakan pernyataan boleh dipanggil dalam tafsiran JDBC?

Bagaimana untuk memanggil prosedur tersimpan menggunakan pernyataan boleh dipanggil dalam tafsiran JDBC?

PHPz
PHPzke hadapan
2023-09-08 23:33:111336semak imbas

如何在 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();

Contoh

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

Contoh

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();
      }
   }
}

output

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!

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