logo

Interfaz de declaración preparada

La interfaz PreparedStatement es una subinterfaz de Statement. Se utiliza para ejecutar consultas parametrizadas.

Veamos el ejemplo de consulta parametrizada:

 String sql='insert into emp values(?,?,?)'; 

Como puede ver, estamos pasando el parámetro (?) para los valores. Su valor se establecerá llamando a los métodos de establecimiento de PreparedStatement.

¿Por qué utilizar PreparedStatement?

Mejora el rendimiento : El rendimiento de la aplicación será más rápido si utiliza la interfaz PreparedStatement porque la consulta se compila solo una vez.


¿Cómo obtener la instancia de PreparedStatement?

El método prepareStatement() de la interfaz Connection se utiliza para devolver el objeto de PreparedStatement. Sintaxis:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Métodos de la interfaz PreparedStatement

Los métodos importantes de la interfaz PreparedStatement se detallan a continuación:

MétodoDescripción
setInt público vacío (int paramIndex, valor int)establece el valor entero en el índice de parámetro dado.
setString público vacío (int paramIndex, valor de cadena)establece el valor de la cadena en el índice del parámetro dado.
setFloat público vacío (int paramIndex, valor flotante)establece el valor flotante en el índice del parámetro dado.
setDouble vacío público (int paramIndex, valor doble)establece el valor doble en el índice de parámetro dado.
público int ejecutarUpdate()ejecuta la consulta. Se utiliza para crear, soltar, insertar, actualizar, eliminar, etc.
conjunto de resultados público ejecutarQuery()ejecuta la consulta de selección. Devuelve una instancia de ResultSet.

Ejemplo de interfaz PreparedStatement que inserta el registro

En primer lugar, cree la tabla como se indica a continuación:

 create table emp(id number(10),name varchar2(50)); 

Ahora inserte registros en esta tabla mediante el código que figura a continuación:

 import java.sql.*; class InsertPrepared{ public static void main(String args[]){ try{ Class.forName('oracle.jdbc.driver.OracleDriver'); Connection con=DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:xe','system','oracle'); PreparedStatement stmt=con.prepareStatement('insert into Emp values(?,?)'); stmt.setInt(1,101);//1 specifies the first parameter in the query stmt.setString(2,'Ratan'); int i=stmt.executeUpdate(); System.out.println(i+' records inserted'); con.close(); }catch(Exception e){ System.out.println(e);} } } 
descarga este ejemplo

Ejemplo de interfaz PreparedStatement que actualiza el registro

 PreparedStatement stmt=con.prepareStatement('update emp set name=? where id=?'); stmt.setString(1,'Sonoo');//1 specifies the first parameter in the query i.e. name stmt.setInt(2,101); int i=stmt.executeUpdate(); System.out.println(i+' records updated'); 
descarga este ejemplo

Ejemplo de interfaz PreparedStatement que elimina el registro

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
descarga este ejemplo

Ejemplo de interfaz PreparedStatement que recupera los registros de una tabla

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
descarga este ejemplo

Ejemplo de PreparedStatement para insertar registros hasta que el usuario presione n

 import java.sql.*; import java.io.*; class RS{ public static void main(String args[])throws Exception{ Class.forName('oracle.jdbc.driver.OracleDriver'); Connection con=DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:xe','system','oracle'); PreparedStatement ps=con.prepareStatement('insert into emp130 values(?,?,?)'); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println('enter id:'); int id=Integer.parseInt(br.readLine()); System.out.println('enter name:'); String name=br.readLine(); System.out.println('enter salary:'); float salary=Float.parseFloat(br.readLine()); ps.setInt(1,id); ps.setString(2,name); ps.setFloat(3,salary); int i=ps.executeUpdate(); System.out.println(i+' records affected'); System.out.println('Do you want to continue: y/n'); String s=br.readLine(); if(s.startsWith('n')){ break; } }while(true); con.close(); }}