Procesar PreparedStatements

El proceso de sentencias SQL con un objeto PreparedStatement se realiza mediante los métodos executeQuery, executeUpdate y execute, al igual que el proceso de objetos Statement. A diferencia de las versiones de Statement, no se pasan parámetros en estos métodos debido a que la sentencia SQL ya se ha suministrado al crear el objeto. Dado que PreparedStatement amplía Statement, las aplicaciones pueden intentar llamar a versiones de los métodos executeQuery, executeUpdate y execute que toman una sentencia SQL. Esta operación provoca el lanzamiento de una excepción SQLException.

Devolver resultados desde consultas SQL

Si debe procesarse una sentencia de consulta SQL que devuelva un objeto ResultSet, debe utilizarse el método executeQuery. El programa PreparedStatementExample utiliza el método executeQuery de un objeto PreparedStatement para obtener un ResultSet.

Nota: Si una sentencia SQL se procesa con el método executeQuery y no devuelve un ResultSet, se lanza una SQLException.

Devolver cuentas de actualización para sentencias SQL

Si se sabe que el código SQL es una sentencia de lenguaje de definición de datos (DDL) o una sentencia de lenguaje de manipulación de datos (DML) que devuelve una cuenta de actualización, debe utilizarse el método executeUpdate. El programa PreparedStatementExample utiliza el método executeUpdate de un objeto PreparedStatement.

Procesar sentencias SQL en las que se desconoce el valor de retorno esperado

Si no se sabe cuál es el tipo de sentencia SQL, debe utilizarse el método execute. Una vez que se ha procesado este método, el controlador JDBC puede indicar a la aplicación qué tipos de resultados ha generado la sentencia SQL mediante las llamadas de API. El método execute devuelve true si el resultado es un ResultSet como mínimo, y false si el valor de retorno es una cuenta de actualización. Con esta información, las aplicaciones pueden utilizar los métodos de sentencia getUpdateCount o getResultSet para recuperar el valor de retorno del proceso de la sentencia SQL.

Nota: Si se llama al método getUpdateCount cuando el resultado es un ResultSet, el valor de retorno es -1. Si se llama al método getResultSet cuando el resultado es una cuenta de actualización, el valor de retorno es null.