domingo, 5 de noviembre de 2017

STATEMENT


1.          Contenido

ŒDEFINICIÓN:
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.
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 procedimieno de base de datos almacenado.


La interfase Statement suminstra métodos básicos para ejecutar sentencias y devolver resultados. La interfase PreparedStatement añade métodos para trabajat con los parámetros IN; y la interfase CallableStatement añade métodos para trabajar con parameters OUT.
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");


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 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.

El método execute se usa para ejecutar sentencias que devuelven más de un result set, más que un update count o una combinación de ambos. Como es esta una característica avanzada que muchos programadores no necesitarñan nunca se verá en su propia sección.

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 si 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 parametro de query con las versiones de los métodos de PreparedStatement o CallableStatement producirái 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. 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.

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 explicitamente 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 clausula de escape se enmarca entre llaves y tiene una palabra clave:

{keyword . . . parameters . . . }


La palabra clave (keyword) indica el tipo de clausula de escape, según se muestra:

• escape para caracteres LIKE

Los caracteres “%” y “_” trabajan como wildcards en la clausula SQL LIKE (“%” significa cero o más caracteres y “_” significa exactamente un carácter”. En orden a interpretarlos literalmente, pueden estar precedidos por un backslash (‘\’), que es un carácter de escape especial en cadenas. Se puede especificar un carácter que se use como carácter de escape por la inclusión de la sintaxis siguiente al final de la consulta.

{escape 'escape-character'}

Por ejemplo, la siguiente query, usando backslash como caracter de escape, encuentra nombres de identificador que comiencen con ‘_’.

stmt.executeQuery("SELECT name FROM Identifiers
WHERE Id LIKE `\_%' {escape `\'};


• fn para funciones escalares

Casi todas las DBMS tienen funciones numèricas, de cadena, de fecha y conversión sobre valores escalares. Una de estas funciones puede usarse colocándola en la sintaxis de escape con la clave fn seguida del nombre de la función deseada y sus argumentos. Por ejemplo, para llamar a la función concat con dos argumentos que serán concatenados:

{fn concat("Hot", "Java")};

El nombre del usuario actual de la base de datos puede obtenerse mediante:

{fn user()};

Las funciones escalares pueden estar soportadas por diferentes DBMS con ligeras diferencias de sintaxis, y pueden no estar disponibles en todos los drivers. Varios métodos de DatabaseMetaData nos listarán las funciones que están soportadas. Por ejemplo, el método getNumericFunctions devuelve una lista de los nombres de las funciones numéricas separadas por comas, el método getStringFunction nos devuelve los nombres de las funciones de cadena, y así varías más.

EL driver o bien mapeará la llamada a la función ‘escapada’ en su propia sintaxis o implementará la función el mismo.
• d, t y ts para literales de fecha y tiempo

Las DBMS difieren en la sintaxis que usan para los literales de fecha, tiempo y timestamp. JDBC soporta un formato estándar ISO para estos literales y usa una clausula de escape que el driver debe traducir a la representación del DBMS.

Por ejemplo, una fecha se especifica en SQL JDBC mediante la sintaxis:

{d `yyyy-mm-dd'}

En esta sintaxis, yyyy es el año, mm es el mes y dd es el dia. El driver reemplazará la clausula de escape por la representaciòn propia equivalente de la DBMS. Por ejemplo, el driver reemplazaría {d 1999-02-28} por ’28-FEB-99’ si este es el formato apropiado para la base subyacente.

Hay clausulas de escape análogas para TIME y TIMESTAMP

{t `hh:mm:ss'}
{ts `yyyy-mm-dd hh:mm:ss.f . . .'}
La parte fraccional de los segundos (.f . . .) del TIMESTAMP puede omitirse.

• call ó ? = call para procedimientos almacenados

Si una database soporta procedimientos almacenados, estos pueden ser invocados desde JDBC mediante:

{call procedure_name[(?, ?, . . .)]}

o, cuando el procedimiento devuelve como resultado un parámetro

{? = call procedure_name[(?, ?, . . .)]}

Los corchetes indican que el material encerrado en ellos es opcional. Estos no forman parte de la sintaxis.

Los argumentos de entrada pueden ser bien literales, bien parámetros. Ver la sección 7 “CallableStatement” de esta guía.

Se puede llamar al método DatabaseMetaData.supportsStoredProcedures para ver si la base de datos soporta procedimientos almacenados.
• oj para joins de salida

La sintaxis para un outer join es:

{oj outer-join}

donde outer-join es de la forma:

table LEFT OUTER JOIN {table | outer-join} ON search-condition
Las Outer joins son una característica avanzada, y solo puede chequearse la gramática SQL mediente una explicación de ella. JDBC provee tres métodos de DatabaseMetaData para determinar que tipos de outer joins soporta un driver: supportsOuterJoins, supportsFullOuterJoins, y supportsLimitedOuterJoins.
El método Statement.setEscapeProcessing activa o desactiva el procesamiento de escape. Por defecto la característica se encuentra activada. Un programador debería desactivar esta característica en tiempo de ejecución cuando el rendimiento ha de ser máximo, pero normalmente debe estar activado. Debería notarse que setEscapeProcesing no trabaja con objetos PreparedStatement por que la sentencia ya está preparada para enviar a la base de datos antes de poder ser llamada.
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., mas de un update count 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). Por ejemplo, un usuario podría ejecutar un procedimiento almacenado (usando una objeto CallableStatement y este procedimiento podría ejecutar una actualización, después una select, luego una actualización, después una select y así. Normalmente, alguien que usa un procedimiento almacenado sabrá que se le va a devolver.

Porque el método execute maneja los casos que se salen de lo ordinario, no sorprende que los resultados devueltos requieren algun manejo especial. Por ejemplo, supongamos que se sabe que el procedimiento devuelve dos result sets.

Después de usar el método execute para ejecutar el procedimiento, se debe llamar al método getResultSet para conseguir el primer result set y después los métodos apropiados getXXX para recuperar los valores de él. Para conseguir el segundo result set, se necesita llamar al método getMoreResults 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 presenta 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 update count o que la sentencia que ha ejecutado es un comando DDL. Lo primero que hay que hacer después de llamar execute es llmar o bien a getResultSet o getUpdateCount. Al método getResultSet se le llama para conseguir el primero de los dos o más objetos ResultSet y al método getUpdateCount para conseguir el primero de dos o más update counts.

Cuando el resultado de una sentencia SQL no es un result set, el método getResultSet devolverá null. Esto quiere decir que el resultado es un update count o que no hay más resultados. La única manera de encontrar que significa el valor null en este caso es llamar al método getUpdateCount, que devolverá un entero. Este entero será el número de filas afectadas por la sentencia ejecutada o –1 para indicar o bien que el resultado es un result set o bien que no hay más resultados. Si el método getResultSet ya ha devuelto null, el resultado no puede ser un objeto ResultSet, por lo que el valor devuelto de –1 tiene que ser que no hay más resultados. En otras palabras, no hay más resultados cuando lo siguiente es cierto:

((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))

Si se ha llamado al método getResultSet y se ha procesado el objeto ResultSet devuelto, es necesario llamar al método getMoreResults para ver si hay más result sets o update counts.. Si getMoreResults devuelve true, entonces es necesario llamar de nuevo a getResultSet para recuperar el siguiente result set. Como ya se ha indicado anteriormente, si getResultset devuelve null hay que llamar a GetUpdateCount para buscar que significa ese null si un update count o que no hay más resultados.

Cuando getMoreResults devuelve false quiere decir que la sentencia SQL ha devuelto un update count o que no hay más resultados. Por tanto es necesario llamar al método getUpdateCount para encontrar cual es el caso. En esta situación, no habrá más resultados cuando lo siguiente es cierto:

((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))

El siguiente código muestra una forma de asegurarse que se ha accedido a todos los result sets y update counts de una llamada al método execute:

stmt.execute(queryStringWithUnknownResults);
while (true) {
int rowCount = stmt.getUpdateCount();
if (rowCount > 0) { // this is an update count
System.out.println("Rows changed = " + count);
stmt.getMoreResults();
continue;
}
if (rowCount == 0) { // DDL command or 0 updates
System.out.println(" No rows changed or statement was DDL
command");
stmt.getMoreResults();
continue;
}

// if we have gotten this far, we have either a result set
// or no more results

ResultSet rs = stmt.getResultSet;
if (rs != null) {
. . . // use metadata to get info about result set columns
while (rs.next()) {
. . . // process results
stmt.getMoreResults();
continue;
}
break; // there are no more results

Crear sentencias
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 conn, la siguiente línea de código crea un objeto Statement para pasar sentencias SQL a la base de datos:

        Statement stmt = conn.createStatement();

Especificar características de ResultSet
Las características de los ResultSets están asociadas con la sentencia que finalmente los crea. El método Connection.createStatement permite especificar estas características de ResultSet. A continuación se ofrecen algunos ejemplos de llamadas válidas al método createStatement:

Ejemplo:     método createStatement

// 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);

PROPIEDADES

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.
En mi caso utilizo phpMyAdmin para crear la bd java1 con nombre de usuario root y sin contraseña. También la tabla Motor con 3 columnas: Marca, Modelo y Potencia.

En la siguiente clase insertamos 2 registros en la tabla motor con el método executeUpdate(). Finalmente mostramos los datos en pantalla ordenados por Potencia.


Obtenemos esto:

ŽEJEMPLOS


2° EJEMPLO
import java.sql.*;
import java.util.Properties;

public class StatementExample {

    public static void main(java.lang.String[] args)
    {

        // Sugerencia: cargarlos desde 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("No se ha podido 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.
            c = DriverManager.getConnection(URL, properties);

            // Crear un objeto Statement.
            s = c.createStatement();
            // Suprimir la tabla de prueba, si existe. Nota: en este
            // ejemplo se presupone que la colección MYLIBRARY
            // existe en el sistema.
            try {
                s.executeUpdate("DROP TABLE MYLIBRARY.MYTABLE");
            } catch (SQLException e) {
                // Continuar simplemente... es probable que la tabla no exista.  
            }

            // Ejecutar una sentencia SQL que crea una tabla en la base de datos.
            s.executeUpdate("CREATE TABLE MYLIBRARY.MYTABLE (NAME VARCHAR(20), ID INTEGER)");

            // Ejecutar 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)");

            // Ejecutar 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 {
            // Cerrar 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.");
            }
        }
    }

}

2. Resumen
DEFINICIÓN:
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.
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 procedimieno de base de datos almacenado.
La interfase Statement suminstra métodos básicos para ejecutar sentencias y devolver resultados. La interfase PreparedStatement añade métodos para trabajat con los parámetros IN; y la interfase CallableStatement añade métodos para trabajar con parameters OUT.
Creacion De Objetos Statement
Un objeto Statement se crea mediante el metodo de Connection create Statement, como podemos ver en el siguiente fragmento de codigo.
Statement stmt = con.create Statement();
Ejecución de sentencias usando objetos Statement.
La interfase Statement nos suministra tres metodos diferentes para ejecutar sentencias SQL, execute Query, execute Update y execute.

El metodo execute Update se usa para ejecutar sentencias INSERT, UPDATE o DELETE asi como sentencias SQL DDL como CREATE TABLE o DROP TABLE. Debe notarse que la interfase Prepared Statement, que hereda los metodos de la interfase Statement, tiene sus propias versiones de los metodos execute Query, execute Update y execute.

Los objetos Prepared Statement no suministran una sentencia SQL como argumento a estos metodos puesto que ya tienen la sentencia precompilada.


Realización de Statement
Pare el metodo execute Query, que devuelve un unico result set, la sentencia se completa cuando todas las filas del objeto Result Set se han devuelto.

Para el metodo execute Update, un sentencia se completa cuando se ejecuta.

Algunos DBMS tratan cada sentencia en un procedimiento almacenado como sentencias separadas.
Cerrar objetos Statement.
No obstante se recomienda como una buena practica de programacion que se cierren explicitamente cuando no sean ya necesarios.
Sintaxis de Escape SQL en objetos Statement
Los objetos Statement pueden contener sentencias SQL que usen sintaxis de escape SQL. El driver buscara por cualquier sintaxis de escape y lo traducira en codigo que entiende la base de datos en particular.

Se puede especificar un caracter que se use como caracter de escape por la inclusion de la sintaxis siguiente al final de la consulta.

JDBC soporta un formato estandar ISO para estos literales y usa una clausula de escape que el driver debe traducir a la representacion del DBMS. El driver reemplazara la clausula de escape por la representacion propia equivalente de la DBMS. Por ejemplo, el driver reemplazaria {d 1999-02-28} por 28-FEB-99 si este es el formato apropiado para la base subyacente.
Uso del método execute
i se ha llamado al metodo get Result Set y se ha procesado el objeto Result Set devuelto, es necesario llamar al metodo get More Results para ver si hay mas result sets o update counts..

Si get More Results devuelve true, entonces es necesario llamar de nuevo a get Result Set para recuperar el siguiente result set.

Como ya se ha indicado anteriormente, si get Resultset devuelve null hay que llamar a Get Update Count para buscar que significa ese null si un update count o que no hay mas resultados.

Por tanto es necesario llamar al metodo get Update Count para encontrar cual es el caso.
Crear sentencias
Los objetos Statement se crean a partir de objetos Connection con el metodo create Statement.
PROPIEDADES
Empezamos por descargar el conector My SQL para Java desde su sitio web: conector My SQL. Ahora tenemos que agregar este archivo jar a nuestra aplicacion de Net Beabs, para ello hacemos Click derecho sobre el nombre del proyecto y seleccionamos propiedades.

Despues de importar el conector ya casi estamos preparados, aunque antes de continuar necesitamos un servidor local y una base de datos.

3.  Summary
DEFINITION:
The Statement object (judgment) is used to process a static SQL statement and obtaining the results produced by it. There can only be an open ResultSet object for each Statement at any given time. All methods statement processing an SQL statement implicitly close the current ResultSet of a judgment if one is open.
A Statement object is used to send SQL statements to the database. There are currently three types of Statement objects, all of which act as containers for the enforcement of judgments in a given connection: Statement, PreparedStatement inherits from Statement and CallableStatement inherits from PreparedStatement. These are specialized for sending particular types of SQL statements, A Statement object is used to execute a simple SQL statement with no parameters. A PreparedStatement object is used to execute SQL statements precompiled with or without IN parameters; and a CallableStatement object is used to execute a stored procedimieno data base.
The Statement interface supplies mores basic methods to execute statements, and return results. The PreparedStatement interface adds methods for trabajat with IN parameters; and CallableStatement interface adds methods for working with OUT parameters.
Creating Objects Statement
A Statement object is created using the create method Connection Statement, as we can see in the following code fragment.
Con.create Statement Statement stmt = ();
Execution of sentences using Statement objects.
The Statement interface provides us three different methods to execute SQL statements, execute Query, Update and execute execute.

Update the Execute method is used to execute INSERT, UPDATE, or DELETE SQL DDL statements also as CREATE TABLE or DROP TABLE. It should be noted that the interface Prepared Statement, which inherits the methods of the Statement interface has its own versions of Query methods execute, execute and execute Update.

The Prepared Statement objects do not provide an SQL statement as an argument to these methods because they already have the precompiled statement.


Making Statement
Stop execute Query method, which returns a single result set, the statement is complete when all rows in the result set object have been returned.

Update method to execute a sentence is completed when running.

Some DBMSs treat each statement in a stored procedure as separate sentences.
Close Statement objects.
However it is recommended as a good programming practice to explicitly close when they are no longer needed.
SQL Escape Syntax in Statement Objects
Statement objects may contain SQL statements that use SQL escape syntax. The driver look for any escape syntax and translate it into code that understands the particular database.

You can specify a character that is used as escape character by including the following syntax at the end of the query.

JDBC supports ISO standard format for these literal and uses an escape clause that the driver must translate to the DBMS representation. The driver will replace the escape clause own representation by the equivalent of the DBMS. For example, replace the driver {02/28/1999} d by 28-FEB-99 if this is the appropriate format for the underlying base.
Using the execute method
i has been called the method get result set has been processed and returned in September Result object, you must call the get method More Results to see if there are more result sets or update counts ..

If you get More Results it returns true, then you need to call back to get result set to retrieve the next result set.

As noted above, if get returns null Resultset must call Get Update Count to find which means that null if an update count or there are no more results.

It is therefore necessary to call the get method Update Count to find which is the case.
Create sentences
Statement objects are created from Connection objects to create Statement method.
PROPERTIES
We started by downloading the My SQL Connector for Java from your website: My SQL connector. Now we need to add this file to our application jar Net beabs to do this right click on the project name and select properties.

After importing the connector we're almost ready, but before continuing need a local server and a database.

4. Recomendaciones
·           Usar el objeto stetement nos facilitara el manejo ordenado y fluido en una conexión a la base de datos.
·       Cada conexión se debe tener en cuenta los objetos que nos permiten administrar la base de datos.

5. Conclusiones
Todas la variables de conexion (cn), Statement (St) y ResultSet(reg) fueron declaradas fuera de todos los metodos, es decir son globales y pueden verse en toda la clase no importa en que proceso lo utilizemos, y para saldar la duda, anteriormente dije que todos estos son metodos, asi es pero por que ejecutar y consulta los llame funciones, es sencillo recordemos algo de teoria, toda funcion retorna un valor es por ello que se le llama funciones a ejecutar y a consulta por que regresan el valor de la variable error y reg respectivamente.
6. Apreciación del Equipo
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 procedimieno de base de datos almacenado.

7. Glosario
§  Sentencia: son los elementos básicos en los que se divide el código en un lenguaje de programación

§  Interfaz: contiene las definiciones de un grupo de funciones relacionadas que una clase o struct pueda implementar. Mediante las interfaces puede incluir, por ejemplo, un comportamiento de varios orígenes en una clase.


§  Query: en español, cadena de consulta es un término informático que se utiliza para hacer referencia a una interacción con una base de datos. Es la parte de una URL que contiene los datos que deben pasar a aplicaciones web como los programas CGI.

§  DBMS: Son las siglas en inglés para los Sistemas de Gestión de Bases de Datos (SGBD). Bajo este nombre se conoce a productos de fabricantes como Oracle, Sybase, Informix, Ingres, Borland, Microsoft, IBM, etc.

§  Keyword: Clave de búsqueda o palabra clave. Conjunto de caracteres que puede utilizarse para buscar una información en un buscador. 

8. Linografía

http://www.chuidiang.com/java/mysql/PreparedStatement-java-mysql.php

http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaha/statemnt.htm?lang=es
http://www.euskalnet.net/jaoprogramador/j2ee/JDBC/jdbc17.htm
http://statementnetbeansjava.blogspot.pe/

1 comentario:

  1. Se debe tener al menos 10 términos en su GLOSARIO. Defina claramente su APRECIACIÓN. Se tiene que establecer 3 RECOMENDACIONES y CONCLUSIONES.Muchas gracias por su aporte. Saludos

    ResponderEliminar