STATEMENT






STATEMENT:
Definición:
Un objeto Statement se usa para enviar sentencias SQL a la base de datos y obtener los resultados producidos por ella. 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 interface PreparedStatement añade métodos para trabajar con los parámetros IN; y la interfase CallableStatement añade métodos para trabajar con parameters OUT.
A continuación una breve descripción sobre cada tipo de objeto:
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.
·       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 interface 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 como resultado un único ResultSet 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 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.
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 interface PreparedStatement, que hereda los métodos de la interface 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 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. 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, no se completa hasta que los resultsets o updatecounts 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.
ü  PreparedStatements:
Las PreparedStatements amplían la interfaz Statement y proporcionan soporte para añadir parámetros a sentencias SQL.
Las sentencias SQL que se pasan a la base de datos pasan por un proceso de dos pasos al devolver los resultados al usuario. Primero se preparan y, a continuación, se procesan. Con los objetos Statement, estas dos fases aparecen como una sola en las aplicaciones. Las PreparedStatements permiten independizar estos dos procesos. El paso de preparación se produce cuando se crea el objeto, y el paso de proceso se produce cuando se llama a los métodos executeQuery, executeUpdate o execute en el objeto PreparedStatement.
La posibilidad de dividir el proceso SQL en fases independientes no tiene sentido sin la adición de marcadores de parámetro. Los marcadores de parámetro se colocan en una aplicación para que esta pueda indicar a la base de datos que no tiene un valor específico durante la preparación, pero que proporciona uno durante el proceso. En las sentencias SQL, los marcadores de parámetro se representan mediante signos de interrogación.
Los marcadores de parámetro posibilitan la creación de sentencias SQL generales que se utilizan para peticiones específicas. Por ejemplo, considere la siguiente sentencia de consulta SQL:

SELECT * FROM EMPLOYEE_TABLE WHERE LASTNAME = 'DETTINGER'

Se trata de una sentencia SQL específica que devuelve un solo valor; es decir, la información relativa a un empleado llamado Dettinger.

Para crear objetos PreparedStatement nuevos, se utiliza el método prepareStatement. A diferencia de en el método createStatement, la sentencia SQL debe suministrarse al crear el objeto PreparedStatement. En ese momento, la sentencia SQL se precompila para su utilización.
·        Procesar PreparedStatements:
El proceso de sentencias SQL con un objeto PreparedStatement se realiza mediante los métodos executeQuery, executeUpdate y execute, al igual que el proceso de objetos Statement. A diferencia de las versiones de Statement, no se pasan parámetros en estos métodos debido a que la sentencia SQL ya se ha suministrado al crear el objeto. Dado que PreparedStatement amplía Statement, las aplicaciones pueden intentar llamar a versiones de los métodos executeQuery, executeUpdate y execute que toman una sentencia SQL. Esta operación provoca el lanzamiento de una excepción SQLException.

ü  CallableStatements:
La interfaz CallableStatement de JDBC amplía PreparedStatement y proporciona soporte para parámetros de salida y de entrada/salida. La interfaz CallableStatement tiene también soporte para parámetros de entrada, que proporciona la interfaz PreparedStatement.
La interfaz CallableStatement permite la utilización de sentencias SQL para llamar a procedimientos almacenados. Los procedimientos almacenados son programas que tienen una interfaz de base de datos. Estos programas tienen lo siguiente:
·        Pueden tener parámetros de entrada y de salida, o parámetros que son tanto de entrada como de salida.
·        Pueden tener un valor de retorno.
·        Tienen la capacidad de devolver varios ResultSets.
Conceptualmente, en JDBC una llamada de procedimiento almacenado es una sola llamada a la base de datos, pero el programa asociado con el procedimiento almacenado puede procesar cientos de peticiones de base de datos. El programa de procedimiento almacenado también puede realizar otras diversas tareas programáticas que no realizan habitualmente las sentencias SQL.
Las CallableStatements, debido a que siguen el modelo de PreparedStatement (que consiste en desacoplar las fases de preparación y proceso), permiten la reutilización optimizada (los detalles están en: PreparedStatements). Dado que las sentencias SQL de un procedimiento almacenado están enlazadas a un programa, se procesan como SQL estático, y con ello puede obtenerse un rendimiento superior. La encapsulación de gran cantidad de trabajo de base de datos en una sola llamada de base de datos reutilizable es un ejemplo de utilización óptima de procedimientos almacenados. Solo esta llamada se transmite por la red al otro sistema, pero la petición puede realizar gran cantidad de trabajo en el sistema remoto.
PROPIEDADES:
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:
“Escape” para caracteres LIKE; Los caracteres “%” y “_” trabajan como wildcards en la cláusula 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 cláusula 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 cláusula 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 cláusulas 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., 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). Por ejemplo, un usuario podría ejecutar un procedimiento almacenado (usando un 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 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.
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

EJEMPLOS:

·        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. 
conexion.close();

·        Para hacer consultas a la base de datos hacen falta una serie de clases que colaboran para hacer acciones sucesivas: Connection, Statement, ResultSetMetaData y SQLException.
   ConsultasSQL.java
package visorconsultas.controlador;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class ConsultaSQL {
           private Connection conexion;
           private ResultSet resultadoConsulta;
           private ResultSetMetaData metaDatos;
           private String consulta;
           //Crea dos arreglos
           private String[][] datosDevueltos;
           private String [] nombresColumnas;
           private String error;
    public ConsultaSQL(Connection conRecibida, String consultaRecibida){
           conexion=conRecibida;
           consulta=consultaRecibida;
           try {
//Crea una instancia para mandar sentencias al servidor MySQL
Statement sentencia=conexion.createStatement();
//Ejecuta la consulta y devuelve el ResultSet
resultadoConsulta=sentencia.executeQuery(consulta);
//Obtiene los metadatos del ResultSet              
metaDatos=resultadoConsulta.getMetaData();
error=null;
}catch (SQLException e) {
error=e.getMessage()}        
}
 public String[][] getDatosDevueltos(){
if(error==null){           
try {        
//Devuelve el número de columnas del resultset
int columnas=metaDatos.getColumnCount();
//Lleva el cursor a la última fila del resultset
resultadoConsulta.last();
//Obtiene el número de fila actual( que aquí es la última)
int filas=resultadoConsulta.getRow();
//Dimensiona el arreglo datosDevueltos con los enteros obtenidos               
datosDevueltos=new String[filas][columnas];
//Ubica el cursor antes del a primera fila
resultadoConsulta.beforeFirst();
for(int i=0;i<filas;i++){
//Va a la siguiente fila
resultadoConsulta.next();
for(int j=0;j<columnas;j++){
//Obtiene el valor de cada una de las columnas en la fila actual
datosDevueltos[i][j]=resultadoConsulta.getString(j+1);                                   
}
}catch (Exception e){
}
}return datosDevueltos;
}
public String[] getNombresColumnas(){
if(error==null){
try{         
//Devuelve el número de columnas
int columnas=metaDatos.getColumnCount();                   
nombresColumnas=new String[columnas];
for(int i=0;i<columnas;i++){
//Obtiene el nombre de cada una de las columnas nombresColumnas[i]=metaDatos.getColumnLabel(i+1);}
}catch(SQLException ex){
}
}return nombresColumnas;
}
public String getMensajeError(){
return error;}
}
El constructor de la clase ConsultaSQL recibe como parámetro un objeto de tipo Connection y otro de String; éste contendrá una sentencia SELECT; Statement es una interfaz que puede ejecutar sentencias en lenguaje SQL a través de una conexión; su método executeQuery()recibe la cadena SELECT y devuelve un objeto de tipo ResultSet, que contiene una imagen de los datos devueltos por el servidor MySQL en formato de tabla, es decir, filas y columnas; además los ResultSet tienen un apuntador o cursor que sirve para recorrer los registros de la tabla; el recorrido se hace con métodos como next(). No obstante, no toda la información necesaria está en los datos que ya se obtuvieron (por ejemplo, falta el nombre de las columnas); para obtener dicha información se usan los objetos del tipo ResultSetMetaData.
En la clase que acabamos de escribir, hay dos métodos: getDatosDevueltos() y getNombresColumnas() que darán la información solicitada con la consulta en dos arreglos, uno contiene la tabla y el otro la lista de los nombres de los atributos de dicha tabla. Con ellos se podrán mostrar los datos. 

RESUMEN:

El 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:
El objeto Statement (sentencia) sirve para procesar una sentencia SQL estática. 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.
ü  PreparedStatements:
Las PreparedStatements amplían la interfaz Statement y proporcionan soporte para añadir parámetros a sentencias SQL.
Las sentencias SQL que se pasan a la base de datos pasan por un proceso de dos pasos al devolver los resultados al usuario. Primero se preparan y, a continuación, se procesan.
ü  CallableStatements:
La interfaz CallableStatement de JDBC amplía PreparedStatement y proporciona soporte para parámetros de salida y de entrada/salida. La interfaz CallableStatement tiene también soporte para parámetros de entrada, que proporciona la interfaz PreparedStatement.
La interfaz CallableStatement permite la utilización de sentencias SQL para llamar a procedimientos almacenados.
Además, el objeto Statement tiene sus propiedades; por ejemplo:
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:
“Escape” para caracteres LIKE: Los caracteres “%” y “_” trabajan como wildcards en la cláusula SQL LIKE (“%” significa cero o más caracteres y “_” significa exactamente un carácter”.
“Fn” para funciones escalares, funciones numèricas, de cadena, de fecha yconversión sobre valores escalares.
“D, T y TS” para literales de fecha y tiempo, 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 el mes y dd el dia. El driver reemplazará la cláusula 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.
SUMMARY:

The 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:
ü  Objects Statement:
The Statement object (judgment) is used to process a static SQL statement. 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.

ü  PreparedStatements:
The PreparedStatements extend the Statement interface and provide support to add parameters to SQL statements.
SQL statements that are passed to the database go through a two-step process to return the results to the user. First prepared and then processed.

ü  CallableStatements:
The JDBC interface CallableStatement extends PreparedStatement and provides support for output parameters and input / output. The CallableStatement interface also supports input parameters, which provides the PreparedStatement interface.
The CallableStatement interface allows the use of SQL statements to call stored procedures.
In addition, the Statement object has its own properties; for example:
An escape clause is framed between keys and have a keyword: {keyword parameters}. The keyword (keyword) indicates the kind of escape clause, as shown:
"Escape" for characters LIKE: The characters "%" and "_" work like wild cards in SQL LIKE clause ("%" means zero or more characters and "_" means exactly one character ".
"Fn" for scalar functions, numeric, string, date of yconversión on scalar values.
"D, T and TS" for date and time literals, for example, a date specified in SQL JDBC using the syntax: {d 'yyyy-mm-dd'}. In this syntax, yyyy is the year, mm the month and dd day. The driver will replace the escape clause by its own visual equivalent of the DBMS. For example, the driver would replace {d} by '28 02/28/1999 -FEB-99 'if this is the appropriate format for the underlying base.


RECOMENDACIONES:

Para aprender a manejar el Statement o sentencias para hacer consultas y jalar información hasta un formulario desde Java hay que tener en cuenta factores como:
ü  Al momento de enviar la información tener en cuenta el nombre de la base de datos, por ejemplo si mi base de datos se llama “BDTIENDA” y dentro de dicha base de datos tenemos una tabla llamada Registros entonces la consulta sería  cnx.rs=cnx.stm.executeQuery (“ Select * From Registros”);
ü  La consulta anterior se realiza cuando se quiere sacar todos los datos de una base de datos per si queremos sacar determinados campos la consulta sería la siguiente cnx.rs=cnx.stm.executeQuery("SELECT codactor,nombre,fechanac,sexo,nompa from Registros")
ü  Al momento de ingresar todos los campos de la tabla que queremos sacar de la tabla tenemos que tener en cuenta el orden en los que están ingresados los datos y la forma correcta de cómo están escritos, en las líneas de código en java les asignaremos una variable para poder mostrarlo por ejemplo:
String cod=cnx.rs.getString("codactor");

Esas son las pautas más importantes a tener en cuenta al momento de hacer una consulta desde Java utilizando el statement.


CONCLUCIÓN:

Un objeto Statement se usa para enviar sentencias SQL a la base de datos y obtener los resultados producidos por ella. 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. 
APRECIACIÓN DEL GRUPO:
Es importante aprender a escribir sentencias Sql desde un lenguaje de programación por múltiples razones, por ejemplo cuando vas a la práctica, puedas desenvolverte haciendo cualquier tipo de requerimientos que sean necesarios para mejorar y agilizar los procesos de consultas, actualización, ingreso y eliminación de datos de una tabla en una Base de Datos.
También es importante manejar estas sentencias para facilitar el trabajo de los empleados que no están tan pegados a la tecnología, para ellos sería muy difícil hacer operaciones requeridas ingresando al mismo Sql, en cambio sería mucho más fácil hacerlo desde una interfaz gráfica más amigable y amena que con solo al hacer click en un botón se hagan todos los requerimientos deseados, entonces es trabajo del programador hacer que ese botón responda a las expectativas.

GLOSARIO:

ü  Suministra: Configurar y mantener el acceso de un usuario a un sistema de la organización.
ü  Interfaz:  Es lo que conocemos en inglés como interface (“superficie de contacto”). En informática se utiliza para nombrar a la conexión funcional entre dos sistemas o dispositivos de cualquier tipo dando una comunicación entre distintos niveles.
ü  Precompilar: Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programación a lenguaje máquina. Además de un traductor, se pueden necesitar otros programas para crear un programa objeto ejecutable.
ü  Query: Significa consulta. Es decir, un query en base de datos es una búsqueda o pedido de datos almacenados en una base de datos.
ü  DBMS: (Data Base Management System), Sistema de administración de base de datos.
ü  Método commit: (Acción de comprometer), se refiere a la idea de consignar un conjunto de cambios "tentativos" de forma permanente. Un uso popular es al final de una transacción de base de datos.
ü  Keyword: Palabra clave. Palabras importantes asociadas a un recurso. Por ejemplo, las palabras claves asociadas a una página web son las que engloban el contenido de la misma.
ü  Wildcards: (Comodines), es utilizada de forma conjunta con una red de referencia (network), permite indicar el número de direcciones IP que serán incluidas en el rango.
ü  Backslash: (barra invertida)
ü  Inclusión digital:  Es la democratización del acceso a las tecnologías de la información y la comunicación para permitir la inserción de todos en la sociedad de la información.
LINKOGRAFIA:

http://es.slideshare.net/LisbethOcaaBueno/statement-67906457 
ü  https://www.youtube.com/watch?v=OFMcraLulXU
ü  http://www.euskalnet.net/jaoprogramador/j2ee/JDBC/jdbc17.htm
ü  http://profesores.fi-b.unam.mx/sun/Downloads/Java/jdbc.pdf


Comentarios

  1. Por favor plantear su FORO sobre el tema. Esta bien su PRESENTACION en SLIDESHARE. Replantear las CONCLUSIONES y RECOMENDACIONES . Además defina con sus propias palabras el APRECIACION DE EQUIPO. Gracias por su investigación. Saludos . Gracias

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS