1. “AÑO DEL BUEN SERVICIO AL CIUDADANO”
FACULTAD DE INGENIERÍA
ESCUELA ACADÉMICA PROFESIONAL DE INGENIERÍA
DE SISTEMAS Y TELEMÁTICA
LABORATORIO DE PROGRAMACIÓN II
STATEMENT
AUTORES
MORI ROJAS, José Manuel
REGALADO JUAPE, Thalia
DOCENTE
PORRO CHULLI, Marco Aurelio
BAGUA GRANDE - AMAZONAS
2017
3. DEFINICIÓN
Es una unidad de código que representa una acción o una secuencia
de acciones. Las sentencias se ejecutan en el orden en que están
escritas y siempre terminan en un punto y coma. Se usa para enviar
sentencias SQL a la base de datos. Actualmente hay tres tipos de
objetos Statement, todos los cuales actúan como contenedores para
la ejecución de sentencias en una conexión dada: Statement,
PreparedStatement que hereda de Statement y CallableStatement
que hereda de PreparedStatement.
4. USO DEL STATEMENT
Creación de objetos Statement
Una vez establecida la conexión con una base de datos particular,
esta conexión puede usarse para enviar sentencias SQL. Un objeto
Statement se crea mediante el método de Connection
createStatement, como podemos ver en el siguiente fragmento de
código.
Connection con = DriverManager.getConnection(url, "VERANO", "");
Statement stmt = con.createStatement();
5. Ejecución de sentencias usando objetos Statement
La interfase Statement nos suministra tres métodos diferentes para ejecutar
sentencias SQL, executeQuery, executeUpdate y execute. El método a usar
está determinado por el producto de la sentencia SQL.
El método executeQuery está diseñado para sentencias que producen
resultado un único result set tal como las sentencias SELECT.
El método executeUpdate se usa para ejecutar sentencias INSERT, UPDATE o
DELETE así como sentencias SQL DDL (Data Definition Language) como
CREATE TABLE o DROP TABLE. El efecto de una sentencia INSERT, UPDATE o
DELETE es una modificación de una o más columnas en cero o más filas de
una tabla. El valor devuelto de executeUpdate es un entero que indica el
número de filas que han sido afectadas (referido como update count). Para
sentencias tales como CREATE TABLE o DROP TABLE, que no operan sobre
filas, le valor devuelto por executeUpdate es siempre cero.
6. Realización de Statement
Cuando una conexión está en modo auto-commit, las sentencias
ejecutadas son ‘comitadas’ o rechazadas cuando se completan. Una
sentencia se considera completa cuando ha sido ejecutada y se han
devuelto todos los resultados. Pare el método executeQuery, que
devuelve un único result set, la sentencia se completa cuando todas
las filas del objeto ResultSet se han devuelto. Para el método
executeUpdate, una sentencia se completa cuando se ejecuta. En los
raros casos en que se llama al método execute, de cualquier modo,
se completa hasta que los result sets o update counts que se
han sido devueltos.
7. Cerrar objetos Statement
Los objetos Statement se cerrarán automáticamente por el colector
basura de Java (garbage collector). No obstante se recomienda
una buena práctica de programación que se cierren explicitamente
cuando no sean ya necesarios. Esto libera recursos DBMS
inmediatamente y ayuda a evitar potenciales problemas de memoria.
8. Sintaxis de Escape SQL en objetos Statement
Los objetos Statement pueden contener sentencias SQL que usen
sintaxis de escape SQL. La sintaxis de escape señala al driver que el
código que lleva debe ser tratado diferentemente. El driver buscará
por cualquier sintaxis de escape y lo traducirá en código que
la base de datos en particular. Esto hace que la sintaxis de escape sea
independiente de la DBMS y permite al programador usar
características que de otro modo no estarían disponibles.
9. MÉTODOS
Una vez creado el objeto Statement podremos ejecutar los métodos de
esta clase para poder interactuar con la Base de Datos, entre los
principales métodos tenemos los siguientes:
execute(String SQL): Devuelve un valor verdadero si la instrucción
devuelve un conjunto de resultados y falso si no se devuelve nada.
executeUpdate(String SQL): Devuelve el número de filas afectadas por
la instrucción indicada, es comúnmente usado para realizar las
sentencias SQL INSERT, UPDATE, DELETE.
executeQuery(String SQL): Devuelve un objeto ResultSet con el
conjunto de resultados obtenidos de la ejecución de la instrucción
indicada. Es comúnmente usado con sentencias SQL SELECT.
10. EJEMPLOS
// El siguiente código es nuevo en JDBC 2.0
Statement stmt2 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATEABLE);
// El siguiente código es nuevo en JDBC 3.0
Statement stmt3 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSOR_OVER_COMMIT);
11. // Preparamos la consulta
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");