CARRERA PROFESIONAL DE INGENIERÍA DE
SISTEMAS Y TELEMATICA
CICLO : V
DOCENTE : MARCO AURELIO PORRO CHULLI
INTEGRANTES:
ØINGRID
LESLY CORONEL ACUÑA
ØCRISTHIAN
SERGIO KAYAP YAGKIKAT
STATEMENT
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 `\'};
• 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., más 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.
EJEMPLOS
1. 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 conexión a la base de datos.
conexion.close();
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.");
}
}
}
}
RESUMEN
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.
SUMMARY
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.
RECOMENDACIONES
·
Un objeto Statement solo, es
usado para ejecutar una sentencia SQL simple sin parámetros.
·
Un objeto Statement se debe
crear, mediante el método de Connection createStatement.
CONCLUSIONES
APRECIACIÓN
DEL EQUIPO
Ø Como
equipo, pasamos a dar a conocer nuestra apreciación respecto a toda la
investigación que realizamos, con relación al tema de "Statemen".
Afirmamos que es 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 que hereda de Statement y
CallableStatement que hereda de PreparedStatement.
GLOSARIO
DE TÉRMINOS
ü Contenedores:
es un componente especial que permite contener en su interior a otros
componentes, incluidos otros contenedores.
ü Parámetros:
es un tipo de variable que es recibida por una función, procedimiento o
subrutina.
ü Fragmento:
es una pieza de software en la que definimos un diseño visual y un comportamiento
determinado, y que además, tiene la ventaja de que puede trabajar con otros
fragments en un mismo Activity.
ü Argumento:
son los valores realmente suministrados a un procedimiento cuando éste es
invocado o llamado.
ü 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.
ü Driver:
es un programa cuya finalidad es relacionar el sistema operativo con los
dispositivos hardware (tarjeta gráfica, tarjeta de sonido, módem, tarjeta de
Tv, wifi, lector mp3, etc.) y periféricos (impresora, escaner, cámara
fotográfica, cámara de vídeo, etc) de nuestro equipo.
ü 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.
LINKOGRAFIA
http://www01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaha/statemnt.htm?lang=es
LINK DE DIAPOSITIVA SOBRE STATEMENT
LINK DE DIAPOSITIVA SOBRE STATEMENT

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
ResponderEliminarPor 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
ResponderEliminar