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
Libérer: 2023-09-08 23:33:11
avant
1381 Les gens l'ont consulté

如何在 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(?, ?, ?)}");
Copier après la connexion

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();
Copier après la connexion

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();
Copier après la connexion

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     |
+--------------+------------------+------------------+----------------+
Copier après la connexion

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 //
Copier après la connexion

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();
      }
   }
}
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal