Preparedstatemet

12
reparedStatement

Transcript of Preparedstatemet

Page 1: Preparedstatemet

PreparedStatement

Page 2: Preparedstatemet

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.

Page 3: Preparedstatemet

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.

Page 4: Preparedstatemet

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.

Page 5: Preparedstatemet

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:

Page 6: Preparedstatemet

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

Page 7: Preparedstatemet

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():

Page 8: Preparedstatemet

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:

Page 9: Preparedstatemet

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:

Page 10: Preparedstatemet

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;

Page 11: Preparedstatemet

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){

Page 12: Preparedstatemet

GRACIAS