Recuperación de datos de tablas utilizando el método PreparedStatement.executeQuery

Para obtener datos de una tabla utilizando una sentencia SELECT con marcadores de parámetros, utilice el método PreparedStatement.executeQuery.

Acerca de esta tarea

Este método devuelve una tabla de resultados en un objeto ResultSet. Una vez obtenida la tabla de resultados, debe utilizar métodos de ResultSet para desplazarse por la tabla de resultados y obtener los valores individuales de cada columna de cada fila.

Con el IBM® Data Server Driver for JDBC and SQLJ, también puede utilizar el método PreparedStatement.executeQuery para recuperar un conjunto de resultados de una llamada de procedimiento almacenado, si dicho procedimiento almacenado devuelve solo un conjunto de resultados y solo tiene parámetros de entrada. Si el procedimiento almacenado devuelve varios conjuntos de resultados, debe utilizar el método PreparedStatement.execute.

Puede también utilizar el método PreparedStatement.executeQuery para sentencias que no tienen marcadores de parámetros. Cuando ejecuta una consulta muchas veces, puede obtener un mejor rendimiento creando la sentencia de SQL en forma de objeto PreparedStatement.

Procedimiento

Para obtener filas de una tabla utilizando una sentencia SELECT con marcadores de parámetros, siga estos pasos:

  1. Invoque el método Connection.prepareStatement para crear un objeto PreparedStatement .
  2. Invocar métodos de " PreparedStatement.setXXX " para pasar valores a los parámetros de entrada.
  3. Invoque el método " PreparedStatement.executeQuery " para obtener la tabla de resultados de la instrucción "SELECT" en un objeto " ResultSet ".
    Restricción : Para un PreparedStatement que contenga un predicado IN, la expresión que es el argumento del predicado IN no puede tener más de 32767 parámetros si el servidor de datos de destino es un sistema Db2 en sistemas Linux®, UNIX y Windows. De lo contrario, el IBM Data Server Driver for JDBC and SQLJ lanza un SQLException con el código de error -4499.
  4. En un bucle, coloque el cursor utilizando el método ResultSet.next y recupere datos de cada columna de la fila actual del objeto ResultSet utilizando métodos getXXX .
  5. Invoque el método ResultSet.close para cerrar el objeto ResultSet .
  6. Invoque el método PreparedStatement.close para cerrar el objeto PreparedStatement cuando haya terminado de utilizarlo.

Ejemplo

El código de programa siguiente muestra cómo recuperar filas de la tabla EMPLOYEE para un empleado determinado. Los números que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
Figura 1. Ejemplo de utilización de PreparedStatement.executeQuery
String empnum, phonenum;
Connection con;
PreparedStatement pstmt;
ResultSet rs;
…
pstmt = con.prepareStatement(
  "SELECT EMPNO, PHONENO FROM EMPLOYEE WHERE EMPNO=?"); 
                                  // Create a PreparedStatement object    1 
pstmt.setString(1,"000010");      // Assign value to input parameter      2 

rs = pstmt.executeQuery();        // Get the result table from the query  3 
while (rs.next()) {               // Position the cursor                  4 
 empnum = rs.getString(1);        // Retrieve the first column value
 phonenum = rs.getString(2);      // Retrieve the first column value
 System.out.println("Employee number = " + empnum +
   "Phone number = " + phonenum);
                                  // Print the column values
}
rs.close();                       // Close the ResultSet                  5 
pstmt.close();                    // Close the PreparedStatement          6