prepared statement

10
ESCUELA DE INGENIERIA DE SISTEMAS Y TELEMATICA INTEGRANTES : REYNA REYNAGA ASUNTA PATRICIA RUIZ PLACENCIA LUZ VERONICA

Upload: patricia-reyna-reynaga

Post on 15-Apr-2017

24 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Prepared statement

ESCUELA DE INGENIERIA DE SISTEMAS Y TELEMATICA

INTEGRANTES :

• REYNA REYNAGA ASUNTA PATRICIA• RUIZ PLACENCIA LUZ VERONICA

Page 2: Prepared statement

PREPARED

STATEMENT

DEFINICION

USOS

PROPIEDADES

Page 3: Prepared statement

DEFINICION

La interfaz PreparedStatement hereda de Statement y difiere de esta en dos maneras.Las instancias de PreparedStatement contienen una sentencia SQL que ya ha sido compilada. Esto es lo que hace que se le llame ‘preparada’.

PreparedStatement tiene un grupo de métodos que fijan los valores de los parámetros IN, los cuales son enviados a la base de datos cuando se procesa la sentencia SQL. 

Page 4: Prepared statement

Son muy útiles cuando una sentencia SQL se ejecuta muchas veces cambiando sólo algunos valores.Se utiliza para enviar sentencias SQL pre compiladas con uno o más parámetros.

Se crea un objeto PreparedStatement especificando la plantilla y los lugares donde irán los parámetros.

Los parámetros son especificados después utilizando los métodos setXXX(.) indicando el número de parámetro y el dato a insertar en la sentencia.

La sentencia SQL y los parámetros se envían a la base de datos cuando se llama al método: executeXXX()

Page 5: Prepared statement

USO

Cuando trabajamos con una base de datos es posible que haya sentencias SQL que tengamos que ejecutar varias veces durante la sesión, aunque sea con distintos parámetros. Por ejemplo, durante una sesión con base de datos podemos querer insertar varios registros en una tabla.

mysql> INSERT INTO person VALUES (null, 23, 'Pedro', 'Perez'); mysql> INSERT INTO person VALUES (null, 33, 'Rodrigo', 'Rodriquez');

Page 6: Prepared statement

El mecanismo que preven las bases de datos para hacer más eficiente este proceso es que le indiquemos, previamente, el tipo de sentencia que vamos a usar, de forma que la base de datos la "precompila" y la guarda en condiciones de ser ejecutada inmediatamente, sin necesidad de analizarla en cada caso. Esto es lo que se conoce como una prepared statement. En el caso de mysql, se haría de esta forma

mysql> PREPARE insertar FROM "INSERT INTO person VALUES (null, ?, ?, ?)";mysql> SET @edad=23;mysql> SET @nombre='Pedro'; mysql> SET @apellido='Perez';mysql> EXECUTE insertar USING @edad,@nombre,@apellidomysql> SET @edad=33;mysql> SET @nombre='Rodrigo'; mysql> SET @apellido='Rodriguez';mysql> EXECUTE insertar USING @edad,@nombre,@apellido;mysql> DEALLOCATE PREPARE insertar;

Page 7: Prepared statement

Si tenemos una conexión a una base de datos y vamos a desplegar nuestro código por diferentes entornos será muy útil el utilizar propiedades de conexión JDBC. La idea es que en cada entorno de ejecución: desarrollo, implantación y producción es probable que tengamos información de acceso a la base de datos diferente.

PROPIEDADES

La idea es crear un fichero de propiedades. Para el ejemplo vamos a hacerlo directamente por código:

Page 8: Prepared statement

atributos de configuración que esté esperando la base de datos. Por ejemplo si utilizamos una base de datos MySQL podemos encontrar algunos como:

jdbcCompliantTruncation, para forzar truncado de campos en inserción.

cachePrepStmts, cachear los PreparedStatement enableQueryTimeouts, activar timeouts en la ejecución de las queries. roundRobinLoadBalance, para balancear con nodos esclavos. autoReconnect, para haver failover sobre un nodo esclavo.

.

Page 9: Prepared statement

EJEMPLO

.//Creamos un objeto PreparedStatement desde el objeto ConnectionPreparedStatement ps = con.prepareStatement("select * from Propietarios where DNI=? AND NOMBRE=? AND EDAD=?");//Seteamos los datos al prepared statement de la siguiente forma:ps.setString(1, dni);ps.setString(2, nombre);ps.setInt(3, edad);//Ejecutamos el PreparedStatement, en este caso con executeQuery()ResultSet rs= ps.executeQuery();

Page 10: Prepared statement