Maison > base de données > tutoriel mysql > le corps du texte

Qu'est-ce que CallableStatement dans JDBC ?

PHPz
Libérer: 2023-09-07 23:53:02
avant
932 Les gens l'ont consulté

L'interface

JDBC 中的 CallableStatement 是什么?

CallableStatement fournit des méthodes pour exécuter des procédures stockées. Étant donné que l'API JDBC fournit une syntaxe d'échappement SQL de procédure stockée, vous pouvez appeler des procédures stockées d'une manière standard unique pour tous les SGBDR.

Création d'un CallableStatement

Vous pouvez créer un 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.

Les instructions appelables peuvent avoir des paramètres d'entrée, des paramètres de sortie ou les deux. Pour transmettre des paramètres d'entrée à un appel de procédure, vous utilisez des espaces réservés et définissez des valeurs pour ces paramètres à l'aide des méthodes setter (setInt(), setString(), setFloat()) fournies par l'interface CallableStatement.

En supposant que vous ayez une procédure appelée myProcedure dans votre base de données, vous pouvez préparer une instruction appelable comme celle-ci :

//Preparing a CallableStatement
CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
Copier après la connexion

Définir les valeurs pour les paramètres d'entrée

Vous pouvez utiliser la méthode setter pour définir les valeurs des paramètres d'entrée d'un appel de procédure.

Ils acceptent deux paramètres, dont l'un est une valeur entière représentant l'index de placement du paramètre d'entrée, l'autre est un int ou, String ou, float, etc... représentant la valeur que vous devez transmettre Entrez les paramètres dans le processus.

Remarque : En plus de l'index, vous pouvez également transmettre les noms de paramètres au format chaîne.

cstmt.setString(1, "Raghav");
cstmt.setInt(2, 3000);
cstmt.setString(3, "Hyderabad");
Copier après la connexion

Exécuter une instruction Callable

Après avoir créé un objet CallableStatement, vous pouvez utiliser l'une des méthodes execute() pour l'exécuter.

cstmt.execute();
Copier après la connexion

Exemple

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

+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+
Copier après la connexion

Nous créons une procédure nommée myProcedure pour insérer des valeurs dans la table comme suit :

Create procedure myProcedure (IN name VARCHAR(30), IN sal INT, IN loc VARCHAR(45))
   -> BEGIN
   -> INSERT INTO Employee(Name, Salary, Location) VALUES (name, sal, loc);
   -> END //
Copier après la connexion

Ci-dessous se trouve un exemple JDBC qui utilise une instruction appelable pour appeler la procédure créée ci-dessus afin d'insérer de nouveaux enregistrements dans la table Employee.

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class CallableStatementExample {
   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/testdb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Preparing a CallableStateement
      CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");

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

      cstmt.setString(1, "Kalyan");
      cstmt.setInt(2, 4000);
      cstmt.setString(3, "Vishakhapatnam");

      cstmt.setString(1, "Rukmini");
      cstmt.setInt(2, 5000);
      cstmt.setString(3, "Delhi");

      cstmt.setString(1, "Archana");
      cstmt.setInt(2, 15000);
      cstmt.setString(3, "Mumbai");

      cstmt.execute();
      System.out.println("Rows inserted ....");
   }
}
Copier après la connexion

Output

Connection established......
Rows inserted ....
Copier après la connexion

Si vous utilisez une requête de sélection pour récupérer le contenu de la table Employee, vous pouvez observer les enregistrements nouvellement ajoutés comme indiqué ci-dessous :

mysql> select * from employee;
+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
| Raghav  | 3000   | Hyderabad      |
| Raghav  | 3000   | Hyderabad      |
| Kalyan  | 4000   | Vishakhapatnam |
| Rukmini | 5000   | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+
9 rows in set (0.00 sec)
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!

source:tutorialspoint.com
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