Preparedstatemet

Post on 13-Apr-2017

26 views 1 download

Transcript of Preparedstatemet

PreparedStatement

DEFINICIÓN

Un objeto PreparedStatement se usa para sentencias SQL que toman uno o más parámetros como argumentos de entrada (parámetros IN). Un objeto PreparedStatement es potencialmente más eficiente que un objeto Statement porque este ha sido precompilado y almacenado para su uso futuro.

MÉTODO EXECUTEUPDATE ()

Ejecuta la instrucción SQL determinada, que puede ser una instrucción INSERT, UPDATE o DELETE; o una instrucción SQL que no devuelve nada, como una instrucción DDL de SQL. Desde el controlador JDBC 3.0 de MicrosoftSQL Server, executeUpdate devolverán el número correcto de filas actualizado en una operación MERGE.

USO DE CALLABLESTATEMENT

Un objeto CallableStatement es una interface JDBC utilizado para llamar o ejecutar procedimientos almacenados de la base de datos desde una aplicación Java.

Antes de usar CallableStatement debemos saber si nuestro Gestor de Base de Datos soporta y usa procedimientos almacenados, para este propósito el método supportsStoredProcedures devolverá true si la DBMS soporta llamadas a procedimientos almacenados y el método getProcedures devolverá una descripción de los procedimientos almacenados disponibles.

Partimos de la situación inicial de un procedimiento almacenado que retorna el valor de un inOutParam incrementado en 1 y la cadena de caracteres pasada via inputParam como Resultset:

Para usar el procedimiento almacenado seguimos los siguientes pasos:

Preparamos el callable statement usando Connection.prepareCall().

Debemos tener siempre en cuenta que debemos de usar la sintaxis de escape de JDBC siendo obligatorios los paréntesis que rodean los parámetros.

1

2Registramos los parámetros de salida (si existen). Para recibir los valores de los parámetros de salida (parámetros especificados como OUT o INOUT cuando se crea el procedimiento), JDBC requiere que estén especificados antes de la ejecución del statement usando los distintos modos de registrar un parámetro con el método registerOutputParameter():

3Especificamos los parámetros de entrada (si existen). Los parámetros de entrada y de entrada/salida se especifican como en los objetos PreparedStatement. Sin embargo, CallableStatement también soporta especificar los parámetros por nombre:

4

Ejecutamos CallableStatement, y recibimos cualquier conjunto de resultados o parámetros de salida.

Mientras CallableStatement soporta llamar a cualquiera de los métodos de ejecución de Statement (executeUpdate(), executeQuery() o execute() ), el método más flexible es execute(), ya que no necesita saber de antemano si el procedimiento almacenado retorna un conjunto de resultados:

EJEMPLO public class InsertarDatos {  public static void main(String[] args) { Connection con = null; PreparedStatement stmt = null;  String sDriver = "com.mysql.jdbc.Driver"; String sURL = "jdbc:mysql://localhost:3306/lineadecodigo"; try{ Class.forName(sDriver).newInstance(); con = DriverManager.getConnection(sURL,"root",""); String sISBN = "84-9815-212-7"; String sTitulo = "Yo, Claudio"; String sDescripcion="Supuesta autobiografía de Claudio"; String sCategoria = "Novela Histórica"; int idAutor = 3;

e.printStackTrace(); } finally { if (con != null) { try{ stmt.close(); con.close(); } catch(Exception e){ e.printStackTrace(); } } } }}

stmt = con.prepareStatement("INSERT INTO libros VALUES (?,?,?,?,?)"); stmt.setString(1,sISBN); stmt.setInt(2,idAutor); stmt.setString(3,sTitulo); stmt.setString(4,sDescripcion); stmt.setString(5,sCategoria); int retorno = stmt.executeUpdate(); if (retorno>0) System.out.println("Insertado correctamente"); } catch (SQLException sqle){ System.out.println("SQLState: " + sqle.getSQLState()); System.out.println("SQLErrorCode: " + sqle.getErrorCode()); sqle.printStackTrace(); } catch (Exception e){

GRACIAS