APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
Statement
1. “AÑO DEL BUEN SERVICIO AL CUIDADANO”
TEMA: STATEMENT.
CURSO: LABORATORIO DE PROGRAMACION II.
ESPECIALIDAD: INGENIERIA DE SISTEMAS Y TELEMATICA
.
INTEGRANTES: MIRIAN GUISELA TARRILLO CHAVEZ.
JORGE LUIS ARISTA CORONEL.
DOCENTE: MARCO AURELIO PORRO CHULLI
CILCO: V – A AULA: 101
BAGUA GRANDE– PERÚ
2017
3. DEFINICION
• Un objeto Statement 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. Estas están
especializadas para enviar tipos particulares
de sentencias SQL.
4. Statement stmt =
con.createStatement()
;
ResultSet rs =
stmt.executeQuery("SELECT a, b,
c FROMTable2");
Connection con =
DriverManager.get
Connection(url,
"sunny", "");
Creación de
un objeto
Statement
Un objeto Statement se crea
mediante el método de Connection
createStatement, como podemos
ver en el siguiente fragmento de
código.
La sentencia SQL que será enviada a la base de
datos es alimentada como un argumento a uno
de los métodos de ejecución del objeto
Statement.
5. Ejecución de
sentencias usando
objeto Statement
La interfase Statement nos suministra tres métodos diferentes para ejecutar sentencias
SQL, executeQuery, executeUpdate y execute. El método a usar esta determinado por el
producto de la sentencia SQL. El método executeQuery esta diseñado para sentencias que
producen como resultado un único result set tal como las sentencias SELECT.
El método executeUpdate se usa para ejecutar sentencias INSERT, UPDATE ó 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. Cuando una conexión está en modo auto-commit, las sentencias
ejecutadas son ‘comitadas’ o rechazadas cuando se completan. Un
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, un sentencia se completa
cuando se ejecuta. En los raros casos en que se llama al método execute,
de cualquier modo, no se completa hasta que los result sets o update
counts que se generan han sido devueltos.
Realización de
Statment
7. Cerrar un
Statement
Los objetos Statement se cerrarán
automáticamente por el colector de
basura de Java (garbage collector). No
obstante se recomienda como 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. 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 entiende 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.
Sintaxis de escape
SQL en objetos
Statement
9. El objeto Statement (sentencia) sirve
para procesar una sentencia SQL
estática y obtener los resultados
producidos por ella. Solo puede haber
un ResultSet abierto para cada objeto
Statement en un momento dado.
Todos los métodos statement que
procesan una sentencia SQL cierran
implícitamente el ResultSet actual de
una sentencia si existe uno abierto.
Objetos
Statemen
10. Los objetos Statement se crean a
partir de objetos Connection con el
método createStatement. Por
ejemplo, suponiendo que ya exista un
objeto Connection denominado con, la
siguiente línea de código crea un
objeto Statement para pasar
sentencias SQL a la base de datos:
Statement stmt =
conn.createState
ment();
Crear sentencias
13. Empezamos por descargar el conector MySQL para Java desde su sitio web: conector
MySQL. Una vez que hemos descargado el fichero .zip correspondiente a nuestra
plataforma lo descomprimimos en el equipo y buscamos dentro de la carpeta principal un
archivo llamado mysql-connector con extensión .jar.
Ahora tenemos que agregar este archivo jar a nuestra aplicación de NetBeabs, para
ello hacemos Click derecho sobre el nombre del proyecto y seleccionamos propiedades. En
la ventana siguiente seleccionamos en librerías y posteriormente pulsamos en el botón –
>Add Jar/folder. Finalmente accedemos a la localización del conector que descargamos
anteriormente y pulsamos OK.Después de importar el conector ya casi estamos preparados,
aunque antes de continuar necesitamos un servidor local y una base de datos.
Propiedades
14. •
//Establecemos la conexión con la base de datos.
Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/prueba","root",
"la_clave");
// Preparamos la consulta
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from persona");
// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en
pantalla.
while (rs.next())
{
System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));
}
// Cerramos la conexion a la base de datos.
conexión.close();
Ejemplo 01
15. Ejemplo 02
import java.sql.*;
import java.util.Properties;
public class StatementExample {
public static void main(java.lang.String[] args)
{
// Sugerencia: estos se cargan a partir de un objeto de propiedades.
String DRIVER = "com.ibm.db2.jdbc.app.DB2Driver";
String URL = "jdbc:db2://*local";
// Registrar el controlador JDBC nativo. Si el controlador no puede
// registrarse, la prueba no puede continuar.
try {
Class.forName(DRIVER);
} catch (Exception e) {
System.out.println("Imposible registrar el controlador.");
System.out.println(e.getMessage());
System.exit(1);
}
Connection c = null;
Statement s = null;
try {
// Crear las propiedades de conexión.
Properties properties = new Properties ();
properties.put ("user", "userid");
properties.put ("password", "password");
// Conectar con la base de datos local de iSeries.
c = DriverManager.getConnection(URL, properties);
// Crear un objeto Statement.
s = c.createStatement();
// Se suprime la tabla de prueba, si existe. Observe que
// en este ejemplo se presupone que la colección MYLIBRARY
// existe en el sistema.
try {
s.executeUpdate("DROP TABLE MYLIBRARY.MYTABLE");
} catch (SQLException e) {
// Se continúa simplemente... es probable que la tabla no exista.
}
// Se ejecuta una sentencia SQL que crea una tabla en la base de datos.
s.executeUpdate("CREATE TABLE MYLIBRARY.MYTABLE
(NAME VARCHAR(20), ID INTEGER)");
16. // Se ejecutan algunas sentencias SQL que insertan registros en la tabla.
s.executeUpdate("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES ('RICH', 123)");
s.executeUpdate("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES ('FRED', 456)");
s.executeUpdate("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES ('MARK', 789)");
// Se ejecuta una consulta SQL en la tabla.
ResultSet rs = s.executeQuery("SELECT * FROM MYLIBRARY.MYTABLE");
// Visualizar todos los datos de la tabla.
while (rs.next()) {
System.out.println("El empleado " + rs.getString(1) + " tiene el ID " + rs.getInt(2));
}
} catch (SQLException sqle) {
System.out.println("El proceso de base de datos ha fallado.");
System.out.println("Razón: " + sqle.getMessage());
} finally {
17. // Se cierran los recursos de base de datos.
try {
if (s != null) {
s.close();
}
} catch (SQLException e) {
System.out.println("El borrado no ha podido cerrar Statement.");
}
}
try {
if (c != null) {
c.close();
}
} catch (SQLException e) {
System.out.println("El borrado no ha podido cerrar Connection.");
}
}
}
}