Heim  >  Artikel  >  Datenbank  >  So rufen Sie eine gespeicherte MySQL-Prozedur in Java auf

So rufen Sie eine gespeicherte MySQL-Prozedur in Java auf

PHPz
PHPzOriginal
2023-04-19 14:12:231903Durchsuche

Java ist eine objektorientierte Programmiersprache und die Interaktion mit Datenbanken ist ein sehr häufiger Vorgang, während MySQL eine der am weitesten verbreiteten relationalen Datenbanken in der Branche ist. In MySQL ist eine gespeicherte Prozedur eine leistungsstarke Programmeinheit, die mehrere SQL-Anweisungen ausführt und Ergebnisse zurückgibt. Das Aufrufen der gespeicherten Prozedur von MySQL in Java ist ebenfalls eine sehr häufige Operation. Als Nächstes erfahren Sie mehr über die Implementierung dieses Prozesses.

1. Erstellung einer gespeicherten MySQL-Prozedur

In MySQL können Sie eine gespeicherte Prozedur mit dem folgenden Befehl erstellen:

CREATE PROCEDURE procedure_name [parameters]
BEGIN
   DECLARE local_variables;
   SQL_statements;
END;

Dabei ist procedure_name der Name der gespeicherten Prozedur und Parameter die Eingabeparameter der gespeicherten Prozedur , das aus einem oder mehreren bestehen kann, getrennt durch Kommas. local_variables sind die lokalen Variablen, die in der gespeicherten Prozedur verwendet werden, und SQL_statements sind alle SQL-Anweisungen, die von der gespeicherten Prozedur ausgeführt werden sollen. Einzelheiten finden Sie in der offiziellen Dokumentation von MySQL.

2. Schritte zum Aufrufen der gespeicherten MySQL-Prozedur in Java

1. Vorbereiten der Datenbankverbindung

Um die gespeicherte MySQL-Prozedur in Java aufzurufen, müssen Sie zunächst die Datenbankverbindung vorbereiten. Sie können JDBC verwenden, um das MySQL-Verbindungsobjekt abzurufen, wie unten gezeigt:

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "username", "password");

Hier ist zu beachten, dass „com.mysql.jdbc.Driver“ der Treiberklassenname von MySQL ist. Sie müssen sicherstellen, dass der entsprechende Treiber vorhanden ist wurde in das JAR-Paket des Projekts importiert.

2. Gespeicherte Prozeduren aufrufen

Um eine gespeicherte Prozedur in Java aufzurufen, müssen Sie CallableStatement verwenden, das das Anweisungsobjekt darstellt, das die gespeicherte Prozedur aufruft. Die spezifische Syntax lautet wie folgt:

CallableStatement cstmt = con.prepareCall("{call procedure_name(?, ?, ...)}");

Darunter ist procedure_name der Name der aufzurufenden gespeicherten Prozedur und in Klammern steht die Parameterliste der gespeicherten Prozedur. Es können ein oder mehrere durch Kommas getrennte Fragezeichen stehen . Unter der Annahme, dass die gespeicherte Prozedur zwei Parameter hat, sollte die obige Anweisung wie folgt geändert werden:

CallableStatement cstmt = con.prepareCall("{call procedure_name(?, ?)}");

3. Parameter festlegen

Um den Parameterwert der gespeicherten Prozedur festzulegen, können Sie die Methode setXX() verwenden, wobei XX die Daten darstellt Typ. Beispiel:

cstmt.setInt(1, 123);
cstmt.setString(2, "hello");

Unter diesen gibt der erste Parameter die Position des Parameters an, beginnend bei 1; der zweite Parameter ist der Wert des Parameters.

4. Führen Sie die gespeicherte Prozedur aus

Nachdem Sie die Parameter festgelegt haben, können Sie die gespeicherte Prozedur über die Methode „execute()“ ausführen:

cstmt.execute();

Die Methode „execute()“ gibt einen booleschen Wert zurück, der angibt, ob die gespeicherte Prozedur ausgeführt wird erfolgreich.

5. Ergebnisse abrufen

Wenn die gespeicherte Prozedur ein Ergebnis zurückgibt, können Sie die Ergebnismenge über die Methode getResultSet() abrufen:

ResultSet rs = cstmt.getResultSet();
while (rs.next()) {
   // 处理结果集
}

Wenn die gespeicherte Prozedur kein Ergebnis zurückgibt, aber Ausgabeparameter vorhanden sind, können Sie dies tun Verwenden Sie die Methode getXX(). Rufen Sie den Wert des Ausgabeparameters ab:

int result = cstmt.getInt(1);

Unter diesen gibt der erste Parameter immer noch die Position des Parameters an.

6. Schließen Sie die Verbindung. Denken Sie zum Schluss daran, die Datenbankverbindung zu schließen:

if (con != null) {
   con.close();
}
. Drei. Beispielcode:

import java.sql.*;

public class Main {
   public static void main(String[] args) {
      try {
         // 准备连接
         Class.forName("com.mysql.jdbc.Driver");
         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "username", "password");

         // 调用存储过程
         CallableStatement cstmt = con.prepareCall("{call procedure_name(?, ?)}");

         // 设置参数
         cstmt.setInt(1, 123);
         cstmt.setString(2, "hello");

         // 执行存储过程
         boolean success = cstmt.execute();
         if (success) {
            // 处理结果集
            ResultSet rs = cstmt.getResultSet();
            while (rs.next()) {
               // 处理结果集
               int id = rs.getInt("id");
               String name = rs.getString("name");
            }
         } else {
            // 处理输出参数
            int result = cstmt.getInt(1);
         }

         // 关闭连接
         if (con != null) {
            con.close();
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}
Viertens: Hinweise

Stellen Sie sicher, dass der MySQL-Treiber geladen wurde und im Projekt verfügbar ist.

Die Parameter der gespeicherten Prozedur können Eingabeparameter vom Typ „In“, Ausgabeparameter vom Typ „Out“ oder Eingabe von sein

    Wenn die gespeicherte Prozedur über Ausgabeparameter verfügt, sollte der Parametertyp vor dem Aufruf der Methode „execute()“ festgelegt werden. Wenn keine Ausgabeparameter vorhanden sind, muss dieses Element nicht festgelegt werden Bei der gespeicherten Prozedur muss das CallableStatement geschlossen und verbunden sein.

Das obige ist der detaillierte Inhalt vonSo rufen Sie eine gespeicherte MySQL-Prozedur in Java auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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