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