Actualización de datos de tablas utilizando el método PreparedStatement.executeUpdate

El método Statement.executeUpdate es efectivo si actualiza tablas de servidores de datos con valores constantes. Sin embargo, las actualizaciones a menudo suponen pasar valores contenidos en variables a las tablas. Para hacer esto, utilice el método PreparedStatement.executeUpdate.

Acerca de esta tarea

Con IBM® Data Server Driver for JDBC and SQLJ, también puede utilizar PreparedStatement.executeUpdate para llamar a procedimientos almacenados que tienen parámetros de entrada y ningún parámetro de salida, y que no devuelven ningún conjunto de resultados.

Db2 for z/OS® no admite la ejecución dinámica de la instrucción CALL. Para llamadas a procedimientos almacenados que están en Db2 for z/OS fuentes de datos, los parámetros pueden ser marcadores de parámetros o literales, pero no expresiones. Se pueden utilizar los tipos de literales siguientes:
  • Entero
  • Doble
  • Decimal
  • Carácter
  • Hexadecimal
  • Graphic

Para llamadas a procedimientos almacenados que están en IBM Informix® fuentes de datos, el objeto PreparedStatement puede ser una instrucción CALL o una instrucción EXECUTE PROCEDURE.

Cuando ejecuta una sentencia de SQL muchas veces, puede obtener un mejor rendimiento creando la sentencia de SQL en forma de objeto PreparedStatement.

Por ejemplo, la siguiente sentencia UPDATE permite actualizar la tabla de empleados (EMPLOYEE) solamente para un único número de teléfono y número de empleado:
UPDATE EMPLOYEE SET PHONENO='4657' WHERE EMPNO='000010'
Suponga que desea generalizar la operación para poder actualizar la tabla de empleados para un conjunto cualquiera de números de teléfono y números de empleado. Para ello es necesario que sustituya los valores constantes del número de teléfono y número de empleado por variables:
UPDATE EMPLOYEE SET PHONENO=? WHERE EMPNO=?
Las variables de esta clase se denominan marcadores de parámetros.

Procedimiento

Para ejecutar una sentencia de SQL con marcadores de parámetros, debe seguir estos pasos:

  1. Invoque el método Connection.prepareStatement para crear un objeto PreparedStatement .
  2. Invoque los métodos de la clase " PreparedStatement.setXXX " para pasar valores a las variables de entrada.

    Este paso presupone que está utilizando marcadores de parámetro estándar. De forma alternativa, si utiliza marcadores de parámetros con nombre, utilice IBM Data Server Driver for JDBC and SQLJ -solo métodos para pasar valores a los parámetros de entrada.

  3. Invoque el método " PreparedStatement.executeUpdate " para actualizar la tabla con los valores de las variables.
  4. Invoque el método PreparedStatement.close para cerrar el objeto PreparedStatement cuando haya terminado de utilizarlo.

Ejemplo

El código siguiente ejecuta los pasos anteriores para actualizar el número de teléfono '4657' del empleado cuyo número de empleado es '000010'. Los números que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
Figura 1. Uso de PreparedStatement.executeUpdate para una sentencia de SQL con marcadores de parámetros
Connection con;
PreparedStatement pstmt;
int numUpd;
…
pstmt = con.prepareStatement(
  "UPDATE EMPLOYEE SET PHONENO=? WHERE EMPNO=?"); 
                                  // Create a PreparedStatement object        1 
pstmt.setString(1,"4657");        // Assign first value to first parameter    2 
pstmt.setString(2,"000010");      // Assign first value to second parameter 
numUpd = pstmt.executeUpdate();   // Perform first update                     3 
pstmt.setString(1,"4658");        // Assign second value to first parameter   
pstmt.setString(2,"000020");      // Assign second value to second parameter 
numUpd = pstmt.executeUpdate();   // Perform second update                 
pstmt.close();                    // Close the PreparedStatement object       4 

Puede también utilizar el método PreparedStatement.executeUpdate para sentencias que no tienen marcadores de parámetros. Los pasos para ejecutar un objeto " PreparedStatement " sin marcadores de parámetros son similares a los de ejecutar un objeto " PreparedStatement " con marcadores de parámetros, excepto que se omite el paso 2. El ejemplo siguiente muestra estos pasos.

Figura 2. Uso de PreparedStatement.executeUpdate para una sentencia de SQL sin marcadores de parámetros
Connection con;
PreparedStatement pstmt;
int numUpd;
…
pstmt = con.prepareStatement(
  "UPDATE EMPLOYEE SET PHONENO='4657' WHERE EMPNO='000010'"); 
                                  // Create a PreparedStatement object   1 
numUpd = pstmt.executeUpdate();   // Perform the update                  3 
pstmt.close();                    // Close the PreparedStatement object  4