El PreparedStatement nos permite definir una sentencia SQL base, que nos sirve para modificar/insertar/buscar uno o varios registros con sólo cambiar los valores de los parámetros que especifiquemos.
Un ejemplo típico es:
PreparedStatement pstmt = con.prepareStatement( "update empleado set sueldo = ? where id_empleado = ?"); pstmt.setDouble(1, 153833.00); pstmt.setInt(2, 110592);Esto nos permite tener una sentencia SQL de fácil lectura y sin tener que concatenar cadenas o hacer conversiones de tipos. De la documentación de java:
An object that represents a precompiled SQL statement.Supongamos que tenemos un mapa de empleados y sueldos:
A SQL statement is precompiled and stored in aPreparedStatement
object. This object can then be used to efficiently execute this statement multiple times.
Map<Integer, Double> empleadoSueldo = new HashMap<>(); empleadoSueldo.put(1, 1000.0); empleadoSueldo.put(2, 2000.0); empleadoSueldo.put(3, 3000.0);Es muy común ver un código como el siguiente:
for(Map.Entry<Integer, Double> empleado : empleadoSueldo.entrySet()) { PreparedStatement pstmt = con.prepareStatement( "update empleado set sueldo = ? where id_empleado = ?"); pstmt.setDouble(1, empleado.getValue()); pstmt.setInt(2, empleado.getKey()); pstmt.executeUpdate(); }La definición de PreparedStatement dice que es una sentencia SQL precompilada para ser ejecutada muchas veces. Pero al crear el PreparedStatement cada vez, se está precompilando y ejecutando. Perdiendo completamente la ventaja en rendimiento que supone el precompilado de una sentencia SQL. Hay algunos manejadores que inclusive crean un procedimiento almacenado temporal, cada vez que se crea un PreparedStatement.
Para aprovechar el precompilado, el código debe cambiar a:
PreparedStatement pstmt = con.prepareStatement( "update empleado set sueldo = ? where id_empleado = ?"); for(Map.Entry<Integer, Double> empleado : empleadoSueldo .entrySet()) { pstmt.setDouble(1, empleado.getValue()); pstmt.setInt(2, empleado.getKey()); pstmt.executeUpdate(); } |
Hasta la próxima...
Nota: Si esta información te es de utilidad o piensas que se puede mejorar, por favor deja un comentario con tus observaciones.
Rapido facil y sencillo gracias por el articulo
ResponderEliminarQue bueno que te sirvió
ResponderEliminarPor cierto el comentario inspiró el nuevo tagline del BLOG: "Rápido, fácil y sencillo. Todo en español."
ResponderEliminar