Un PreparedStatement es una declaración SQL precompilada. Es una subinterfaz de Statement . Los objetos de declaración preparados tienen algunas características adicionales útiles que los objetos de declaración. En lugar de consultas codificadas, el objeto PreparedStatement proporciona una función para ejecutar una consulta parametrizada.
Ventajas de la Declaración Preparada
- Cuando se crea PreparedStatement, la consulta SQL se pasa como parámetro. Esta declaración preparada contiene una consulta SQL precompilada, por lo que cuando se ejecuta la declaración preparada, DBMS puede simplemente ejecutar la consulta en lugar de compilarla primero.
- Podemos usar el mismo PreparedStatement y suministrar con diferentes parámetros en el momento de la ejecución.
- Una ventaja importante de las declaraciones preparadas es que evitan los ataques de inyección SQL.
Pasos para usar PreparedStatement
1. Crear conexión a la base de datos
Connection myCon = DriverManager.getConnection(path,username,password)
2. Prepare la declaración
en lugar de codificar consultas como,
select * from students where age>10 and name ='Chhavi'
Establezca marcadores de posición de parámetros (utilice el signo de interrogación para los marcadores de posición) como,
select * from students where age> ? and name = ?
PreparedStatement myStmt; myStmt = myCon.prepareStatement(select * from students where age> ? and name = ?);
3. Establecer valores de parámetros para tipo y posición
myStmt.setInt(1,10); myStmt.setString(2,"Chhavi");
4. Ejecutar la Consulta
ResultSet myRs= myStmt.executeQuery();
Métodos de declaración preparada:
- setInt(int, int): este método se puede usar para establecer un valor entero en el índice de parámetro dado.
- setString(int, string): este método se puede usar para establecer el valor de la string en el índice del parámetro dado.
- setFloat(int, float): este método se puede usar para establecer el valor flotante en el índice de parámetro dado.
- setDouble(int, double): este método se puede usar para establecer un valor doble en el índice de parámetro dado.
- executeUpdate(): este método se puede usar para crear, soltar, insertar, actualizar, eliminar, etc. Devuelve el tipo int.
- executeQuery(): devuelve una instancia de ResultSet cuando se ejecuta una consulta de selección.
Ejecutar código de ejemplo de consulta
Java
// Java program to execute a query using PreparedStatement import java.sql.*; public class GFG { // Driver Code public static void main(String[] args) throws Exception { // Register Driver Class Class.forName("org.apache.derby.jdbc.ClientDriver"); // Connection to your database Connection con = DriverManager.getConnection(); // Query which needs parameters String query = "Select * from students where age> ? and name = ?"; // Prepare Statement PreparedStatement myStmt = con.prepareStatement(query); // Set Parameters myStmt.setInt(1, 20); myStmt.setStrin(2, 'Prateek'); // Execute SQL query ResultSet myRs = myStmt.executeQuery(); System.out.println('Age Name'); // Display function to show the Resultset while (myRs.next()) { String Name = rs.getString("name"); int age = rs.getInt("age"); System.out.println(Name + " " + age); } // Close the connection con.close(); } }
Ejecutar código de ejemplo de actualización
Java
// Java program to update a table using PreparedStatement import java.sql.*; public class GFG { // Driver Code public static void main(String[] args) throws Exception { // Register Driver Class Class.forName("org.apache.derby.jdbc.ClientDriver"); // Connection to your database Connection con = DriverManager.getConnection(); // Query which needs parameters String query = "insert into Students values(?,?)"; // Prepare Statement PreparedStatement myStmt = con.prepareStatement(query); // Set Parameters myStmt.setInt(1, 21); myStmt.setStrin(2, 'Prajjwal'); // Execute SQL query int res = myStmt.executeUpdate(); // Display the records inserted System.out.println(res + " records inserted"); // Close the connection con.close(); } }
Publicación traducida automáticamente
Artículo escrito por prateekc231 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA