martes, 1 de noviembre de 2016

STATEMENT-DESARROLLO DE SOFTWARE I


DESARROLLO DE SOFTWARE I


  1.   STATEMENT

  1.1  DEFINICIÓN
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.
Un objeto Statement se usa para ejecutar una sentencia SQL simple sin parámetros. Un objeto PreparedStatement se usa para ejecutar sentencias SQL precompiladas con o sin parámetros IN; y un objeto CallableStatement se usa para ejecutar un procedimiento de base de datos almacenado.
La interface Statement suminstra métodos básicos para ejecutar sentencias y devolver resultados. La interfase PreparedStatement añade métodos para trabajar con los parámetros IN; y la interface CallableStatement añade métodos para trabajar con parámetros OUT.

  1.2  PROPIEDADES
Métodos de la interface Statement
Nos suministra tres métodos diferentes para ejecutar sentencias SQL, el método a usar está determinado por el producto de la sentencia SQL
·          ·    ExecuteQuery
El método executeQuery está diseñado para sentencias que producen como resultado un único resultset tal como las sentencias SELECT.
·         ·    ExecuteUpdate
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.
·         ·    Execute
El método execute se usa para ejecutar sentencias que devuelven más de un resultset, más que un update count o una combinación de ambos. Como es esta una característica avanzada que muchos programadores no necesitaran nunca se verá en su propia sección.
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, "sunny", ""); Statement stmt = con.createStatement();

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. Por ejemplo:

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");

Todos los métodos que ejecutan sentencias cierran los objetos Resultset abiertos como resultado de las llamadas a Statement. Esto quiere decir que es necesario completar el proceso con el actual objeto Resulset antes de reejecutar una sentencia Statement.
Debe notarse que la interfase PreparedStatement, que hereda los métodos de la interfase Statement, tiene sus propias versiones de los métodos executeQuery, executeUpdate y execute. Los objetos Statement en sí mismos no contienen una sentencia SQL, por tanto debe suministrarse como un argumento a los métodos Statement.execute. Los objetos PreparedStatement no suministran una sentencia SQL como argumento a estos métodos puesto que ya tienen la sentencia precompilada.
Los objetos CallableStatement heredan las formas de estos métodos de PreparedStatement. Usar un parámetro de query con las versiones de los métodos de PreparedStatement o CallableStatement producirán una SQLException.
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. Para el método executeQuery, que devuelve un único resultset, 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, no se completa hasta que los result sets o update counts que se generan han sido devueltos.
Algunos DBMS tratan cada sentencia en un procedimiento almacenado como sentencias separadas. Otros tratan el procedimiento entero como una sentencia compuesta. Esta diferencia se convierte en importante cuando está activo el modo auto-commit porque afecta cuando se llama al método commit. En el primer caso, cada sentencia individual es commitada. En el segundo, se commiten todas juntas.
Cerrar objetos 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 explícitamente cuando no sean ya necesarios. Esto libera recursos DBMS inmediatamente y ayuda a evitar potenciales problemas de memoria.
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 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.
Una cláusula de escape se enmarca entre llaves y tiene una palabra clave:
{keyword . . . parameters . . . }
La palabra clave (keyword) indica el tipo de cláusula de escape, según se muestra.
Uso del método Execute
El método execute debería usarse solamente cuando es posible que una sentencia nos devuelva más de un objeto Resultset., más de un updatecount o una combinación de ambos. Estas múltiples posibilidades para resultados, aunque raras, son posibles cuando se ejecutan ciertos procedimientos almacenados o por la ejecución dinámica de una string SQL desconocida (esto es, desconocida para el programador de la aplicación en tiempo de compilación).
Después de usar el método execute para ejecutar el procedimiento, se debe llamar al método getResultSet para conseguir el primer resultset y después los métodos apropiados get XXX para recuperar los valores de él. Para conseguir el segundo result set, se necesita llamar al método getMoreResults y y despues a getResultSet de nuevo. Si se sabe que el procedimiento devuelve dos upadte counts, se llama primero al método getUpdateCount, seguido de getMoreResults y de nuevo getUpdateCount.
Aquellos casos en los que no se conoce que devolverá se nos presentan una situación más compleja. El método execute devuelve true si el resultado es un objeto ResultSet y false si es un int Java. Si devuelve un int, esto quiere decir que el resultado o bien es un updatecount o que la sentencia que ha ejecutado es un comando DDL. Lo primero que hay que hacer después de llamar execute es llamar o bien a getResultSet o getUpdateCount.

  1.3  EJEMPLO
//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 producto");
// 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 conexión a la base de datos.
conexion.close();

  2.   RESUMEN
STATEMENT -  JAVA.SQL.STATEMENT:
java.sql.Statement
Se usa para ejecutar sentencias SQL.
Lleva asociada una conexión que sirvió como origen para su creación.
·         Se crea con el método de la clase:
java.sql.Connection:
public Statement createStament() trows java.sql.SQLException;
·         Las sentencias se cierran con el método:
public void close() trows java.sql.SQLException;
El método para ejecutarla depende del tipo de sentencia SQL que contenga.
Sentencias SELECT:
Se usa el método: executeQuery(String sql). Devuelve una instancia de java.sql.ResultSet.
Sentencias INSERT, UPDATE, DELETE:
Se usa el método: executeUpdate(String sql).devuelve un int con el número de filas afectadas

  3.   SUMMARY
STATEMENT - java.sql.Statement:
java.sql.Statement
It is used to execute SQL statements.
It is associated with a connection that served as the source for its creation.
• is created with the method of the class:
java.sql.Connection:
Statement public createStament () trows java.sql.SQLException;
• The sentences are closed with the method:
public void close () trows java.sql.SQLException;
The method to execute depends on the type of SQL statement containing.
SELECT statements:
executeQuery (String sql) method is used. Returns an instance of java.sql.ResultSet.
INSERT, UPDATE, DELETE:
the method is used: executeUpdate (String sql) .devuelve an int with the number of rows affected

  4.   RECOMENDACIONES
Ø  Un objeto Statement se debe crear, mediante el método de Connection createStatement
Ø Un objeto Statement solo, es usado para ejecutar una sentencia SQL simple sin parámetros.
Ø  Un objeto PreparedStatement se usa para ejecutar sentencias SQL precompiladas con o sin parámetros IN.
Ø Un objeto CallableStatement se usa para ejecutar un procedimiento de base de datos almacenado.

  5.   CONCLUSIONES
Ø Para el método de conexión se utilizan los siguientes componentes: Connection, Statement y ResultSet.
Ø  El Statement es el que genera el comando de ejecución, para ello todo este comando lo mandamos en el parámetro SQL.

  6.   APRECIACIÓN DEL EQUIPO
Ø Nuestra apreciación con respecto al trabajo realizado, sobre el tema de Statement es que Statement es un objeto que es usado 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 y CallableStatement.
Ø  Esperamos que este trabajo le sea útil a la persona interesadas.

  7.   GLOSARIO 
·    MÉTODO.- Un método en Java es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante un nombre.
·  CONTENEDOR.- Se trata de unidades estancas que protegen las mercancías de la climatología.
·      PARÁMETROS.- Variable que establece un conjunto de características a ser reproducidas dentro de un patrón establecido por un programa o lenguaje dados.
·     INTERFACE.- es el conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
·       SINTAXIS.- Forma correcta en que deben estar dispuestos los símbolos que componen una instrucción ejecutable por el ordenador.
·  OBJETO.-entidad existente en la memoria del ordenador que tiene unas propiedades (atributos o datos sobre sí mismo almacenados por el objeto) y unas operaciones disponibles específicas (métodos).

  8.   LINKOGRAFIA












No hay comentarios.:

Publicar un comentario