¿Cómo usar PreparedStatement en Java?

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.
Initial Table content

Tabla original

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();
    }
}
Execute a Query using preparedstatement

Producción

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();
    }
}
Update table using PreparedStatement Query

Producción 

Table content after updation

Tabla después de insertar valores

Publicación traducida automáticamente

Artículo escrito por prateekc231 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *