Maison >base de données >tutoriel mysql >Comment appeler une procédure stockée à l'aide d'une instruction appelable dans l'interprétation JDBC ?

Comment appeler une procédure stockée à l'aide d'une instruction appelable dans l'interprétation JDBC ?

PHPz
PHPzavant
2023-09-08 23:33:111331parcourir

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

Vous pouvez utiliser l'interface CallableStatement pour appeler des procédures stockées SQL. Une instruction Callable peut avoir des paramètres d’entrée, des paramètres de sortie ou les deux.

Vous pouvez créer un objet de CallableStatement(interface) en utilisant la méthode prepareCall() > de l'interface Connection. Cette méthode accepte une variable chaîne représentant la requête pour appeler la procédure stockée et renvoie un objet CallableStatement.

Supposons que vous ayez un nom de procédure myProcedure Dans la base de données, vous pouvez préparer une instruction appelable :

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

Ensuite, vous pouvez utiliser la méthode setter de l'interface CallableStatement pour définir la valeur de l'espace réservé et utiliser l'exécution ( ) pour exécuter l’instruction appelable comme indiqué ci-dessous.

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

Si la procédure n'a pas de valeurs d'entrée, vous pouvez simplement préparer une instruction appelable et l'exécuter comme ceci :

CallableStatement cstmt = con.prepareCall("{call myProcedure()}");
cstmt.execute();

Exemple

Supposons qu'il existe une table nommée Dispatches dans une base de données MySQL qui contient les données suivantes :

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

Si nous créons une procédure appelée myProcedure pour récupérer les valeurs de cette table comme indiqué ci-dessous :

Create procedure myProcedure ()
-> BEGIN
-> SELECT * FROM Dispatches;
-> END //

Exemple

Voici un exemple JDBC utilisant un programme JDBC pour appeler la procédure stockée ci-dessus.

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

sortie

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer