Heim > Datenbank > MySQL-Tutorial > Wie rufe ich eine gespeicherte Prozedur mithilfe einer aufrufbaren Anweisung in der JDBC-Interpretation auf?

Wie rufe ich eine gespeicherte Prozedur mithilfe einer aufrufbaren Anweisung in der JDBC-Interpretation auf?

PHPz
Freigeben: 2023-09-08 23:33:11
nach vorne
1372 Leute haben es durchsucht

如何在 JDBC 解释中使用可调用语句调用存储过程?

Sie können die CallableStatement-Schnittstelle verwenden, um gespeicherte SQL-Prozeduren aufzurufen. Eine aufrufbare Anweisung kann Eingabeparameter, Ausgabeparameter oder beides haben.

Sie können ein Objekt von CallableStatement (Schnittstelle) mit der Methode prepareCall() > der Schnittstelle Connection erstellen. Diese Methode akzeptiert eine Zeichenfolgenvariable, die die Abfrage zum Aufrufen der gespeicherten Prozedur darstellt, und gibt ein CallableStatement-Objekt zurück.

Angenommen, Sie haben einen Prozedurnamen myProcedure In der Datenbank können Sie eine aufrufbare Anweisung vorbereiten:

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

Anschließend können Sie die Setter-Methode der CallableStatement-Schnittstelle verwenden, um den Wert für den Platzhalter festzulegen, und die Ausführung verwenden ( )-Methode, um die Call-Anweisung wie unten gezeigt auszuführen.

cstmt.setString(1, "Raghav");
cstmt.setInt(2, 3000);
cstmt.setString(3, "Hyderabad");
cstmt.execute();
Nach dem Login kopieren

Wenn die Prozedur keine Eingabewerte hat, können Sie einfach eine aufrufbare Anweisung vorbereiten und sie wie folgt ausführen:

CallableStatement cstmt = con.prepareCall("{call myProcedure()}");
cstmt.execute();
Nach dem Login kopieren

Beispiel

Angenommen, es gibt eine Tabelle mit dem Namen Dispatches in einer MySQL-Datenbank, die die folgenden Daten enthält:

+--------------+------------------+------------------+----------------+
| 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     |
+--------------+------------------+------------------+----------------+
Nach dem Login kopieren

Wenn wir eine Prozedur namens myProcedure erstellen, um Werte aus dieser Tabelle abzurufen, wie unten gezeigt:

Create procedure myProcedure ()
-> BEGIN
-> SELECT * FROM Dispatches;
-> END //
Nach dem Login kopieren

Beispiel

Hier ist ein JDBC-Beispiel, bei dem ein JDBC-Programm zum Aufrufen der oben gespeicherten Prozedur verwendet wird.

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();
      }
   }
}
Nach dem Login kopieren

Ausgabe

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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie rufe ich eine gespeicherte Prozedur mithilfe einer aufrufbaren Anweisung in der JDBC-Interpretation auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage