Maison >base de données >tutoriel mysql >Qu'est-ce que PreparedStatement dans JDBC ?
L'interface
PreparedStatement étend l'interface Statement, qui représente une instruction SQL précompilée qui peut être exécutée plusieurs fois. Il accepte une requête SQL paramétrée et vous pouvez transmettre 0 ou plusieurs paramètres à cette requête.
Initialement, cette instruction utilise des espaces réservés "?" au lieu de paramètres, plus tard, vous pouvez transmettre des paramètres pour les implémenter dynamiquement à l'aide de la méthode setXXX() de l'interface PreparedStatement.
Vous pouvez créer un PreparedStatement (interface) en utilisant la méthode prepareStatement() de l'interface de connexion. Cette méthode accepte une requête (paramétrée) et renvoie un objet PreparedStatement.
Lorsque vous appelez cette méthode, l'objet Connection envoie la requête donnée à la base de données pour la compiler et la sauvegarder. Si la requête est compilée avec succès, seul l'objet est renvoyé.
Pour compiler la requête, la base de données ne nécessite aucune valeur, vous pouvez donc utiliser (zéro ou plus) espaces réservés (points d'interrogation ” ?”) pour remplacer les valeurs dans la requête.
Par exemple, s'il existe une table nommée Employé dans la base de données, créez-la à l'aide de la requête suivante.
CREATE TABLE Employee(Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255));
Vous devriez alors pouvoir y insérer des valeurs à l'aide d'instructions préparées comme indiqué ci-dessous.
//Creating a Prepared Statement String query="INSERT INTO Employee(Name, Salary, Location)VALUES(?, ?, ?)"; Statement pstmt = con.prepareStatement(query);
PreparedStatementL'interface fournit plusieurs méthodes de définition, telles que setInt(), setFloat(), setArray(), setDate(), setDouble(), etc., pour définir des instructions précompilées La valeur de l'espace réservé.
Ces méthodes acceptent deux paramètres, l'un est une valeur entière représentant l'index de position de l'espace réservé et l'autre est un int, une chaîne, un float, etc. représentant la valeur que vous devez insérer.
Vous pouvez définir la valeur de l'espace réservé pour l'instruction créée ci-dessus à l'aide de la méthode setter dans l'exemple suivant :
pstmt.setString(1, "Amit"); pstmt.setInt(2, 3000); pstmt.setString(3, "Hyderabad"); pstmt.setString(1, "Kalyan"); pstmt.setInt(2, 4000); pstmt.setString(3, "Vishakhapatnam"); pstmt.setString(1, "Renuka"); pstmt.setInt(2, 5000); pstmt.setString(3, "Delhi"); pstmt.setString(1, "Archana"); pstmt.setInt(2, 15000); pstmt.setString(3, "Mumbai");
Après avoir créé l'objet PreparedStatement, vous pouvez utiliser l'un des execute() méthodes de l'interface PreparedStatement pour l'exécuter, à savoir execute(), executeUpdate() etexecuteQuery().
execute() : strong> Cette méthode exécute une instruction SQL statique normale dans l'objet d'instruction préparé actuel et renvoie une valeur booléenne.
executeQuery() : Cette méthode exécute
executeUpdate() : Cette méthode exécute des instructions SQL DML telles que insert update ou delete dans le Prepared actuel. Il renvoie une valeur entière représentant le nombre de lignes affectées.
Vous pouvez exécuter l'instruction préparée créée ci-dessus comme suit :
Dans cet exemple, nous essayons d'insérer des valeurs dans une table nommée "Employés" à l'aide d'instructions préparées.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class PreparedStatementExample { 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......"); //Creating a Prepared Statement String query = "INSERT INTO Employees(Name, Salary, Location) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1, "Amit"); pstmt.setInt(2, 3000); pstmt.setString(3, "Hyderabad"); pstmt.setString(1, "Kalyan"); pstmt.setInt(2, 4000); pstmt.setString(3, "Vishakhapatnam"); pstmt.setString(1, "Renuka"); pstmt.setInt(2, 5000); pstmt.setString(3, "Delhi"); pstmt.setString(1, "Archana"); pstmt.setInt(2, 15000); pstmt.setString(3, "Mumbai"); int num = pstmt.executeUpdate(); System.out.println("Rows inserted ...."); } }
Connection established...... Number of rows inserted: 1
Si vous validez la base de données, vous pouvez observer les valeurs insérées dans le tableau :
+---------+--------+----------------+ | Name | Salary | Location | +---------+--------+----------------+ | Amit | 30000 | Hyderabad | | Kalyan | 40000 | Vishakhapatnam | | Renuka | 50000 | Delhi | | Archana | 15000 | Mumbai | +---------+--------+----------------+ 5 rows in set (0.00 sec)
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!