SlideShare una empresa de Scribd logo
1 de 20
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.
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.
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
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.
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:
EJEMPLOS
EJEMPLO 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.");}}}}
Statement

Más contenido relacionado

La actualidad más candente (18)

Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence API
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 
Conectar java con una base de datos
Conectar java con una base de datosConectar java con una base de datos
Conectar java con una base de datos
 
Tema statement
Tema statementTema statement
Tema statement
 
Statement
StatementStatement
Statement
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
Statement
StatementStatement
Statement
 
Connection
ConnectionConnection
Connection
 
JPA en Netbeans
JPA en NetbeansJPA en Netbeans
JPA en Netbeans
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)
 
Preparestatement
PreparestatementPreparestatement
Preparestatement
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
Ayuda la clase statement
Ayuda la clase statementAyuda la clase statement
Ayuda la clase statement
 
Preparedstatemet
PreparedstatemetPreparedstatemet
Preparedstatemet
 
Objeto Sql Command
Objeto Sql CommandObjeto Sql Command
Objeto Sql Command
 
Trabajo de statement
Trabajo de statementTrabajo de statement
Trabajo de statement
 

Destacado

Foro 1 de economía popular y solidaria_OCHOA EVELYN
Foro 1 de economía popular y solidaria_OCHOA EVELYNForo 1 de economía popular y solidaria_OCHOA EVELYN
Foro 1 de economía popular y solidaria_OCHOA EVELYNKathy Ochoa
 
Ppt3 ator 2 - si x sc
Ppt3   ator 2 - si x scPpt3   ator 2 - si x sc
Ppt3 ator 2 - si x scInformatica
 
Critica positiva wikkipedia
Critica positiva wikkipediaCritica positiva wikkipedia
Critica positiva wikkipediaInformatica
 
Bruce Decker Journal of Thermal Engineering
Bruce Decker Journal of Thermal EngineeringBruce Decker Journal of Thermal Engineering
Bruce Decker Journal of Thermal EngineeringBruce Decker
 
Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...
Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...
Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...Americo_Ramos
 
Pengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah Matematika
Pengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah MatematikaPengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah Matematika
Pengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah MatematikaMuhammad Alfiansyah Alfi
 
Baptists4israel Sample year
Baptists4israel Sample yearBaptists4israel Sample year
Baptists4israel Sample yearbaptists4israel
 
Non-Uniform Memory Access ( NUMA)
Non-Uniform Memory Access ( NUMA)Non-Uniform Memory Access ( NUMA)
Non-Uniform Memory Access ( NUMA)Nakul Manchanda
 
Constituição de 1891
Constituição de 1891 Constituição de 1891
Constituição de 1891 Matheusbvieira
 
Скульптура. Художній образ у об’ємі
Скульптура. Художній образ у об’єміСкульптура. Художній образ у об’ємі
Скульптура. Художній образ у об’єміКовпитська ЗОШ
 

Destacado (18)

Aromaticos 1
Aromaticos 1Aromaticos 1
Aromaticos 1
 
Iglesia,
Iglesia,Iglesia,
Iglesia,
 
Foro 1 de economía popular y solidaria_OCHOA EVELYN
Foro 1 de economía popular y solidaria_OCHOA EVELYNForo 1 de economía popular y solidaria_OCHOA EVELYN
Foro 1 de economía popular y solidaria_OCHOA EVELYN
 
4AA2-4972ENW
4AA2-4972ENW4AA2-4972ENW
4AA2-4972ENW
 
Workflow Management, SaaS, Cloud Computing
Workflow Management, SaaS, Cloud ComputingWorkflow Management, SaaS, Cloud Computing
Workflow Management, SaaS, Cloud Computing
 
Ppt3 ator 2 - si x sc
Ppt3   ator 2 - si x scPpt3   ator 2 - si x sc
Ppt3 ator 2 - si x sc
 
Critica positiva wikkipedia
Critica positiva wikkipediaCritica positiva wikkipedia
Critica positiva wikkipedia
 
Biologia
BiologiaBiologia
Biologia
 
Practica de matrices
Practica de  matricesPractica de  matrices
Practica de matrices
 
Bruce Decker Journal of Thermal Engineering
Bruce Decker Journal of Thermal EngineeringBruce Decker Journal of Thermal Engineering
Bruce Decker Journal of Thermal Engineering
 
Penerapan Logaritma dalam Kehidupan
Penerapan Logaritma dalam KehidupanPenerapan Logaritma dalam Kehidupan
Penerapan Logaritma dalam Kehidupan
 
Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...
Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...
Apresentação de Américo Ramos no 9º Encontro de Aprimoramento do Processo de ...
 
Pengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah Matematika
Pengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah MatematikaPengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah Matematika
Pengembangan Tes Untuk Kemampuan Kreatif Pemecahan Masalah Matematika
 
Baptists4israel Sample year
Baptists4israel Sample yearBaptists4israel Sample year
Baptists4israel Sample year
 
Non-Uniform Memory Access ( NUMA)
Non-Uniform Memory Access ( NUMA)Non-Uniform Memory Access ( NUMA)
Non-Uniform Memory Access ( NUMA)
 
Constituição de 1891
Constituição de 1891 Constituição de 1891
Constituição de 1891
 
Скульптура. Художній образ у об’ємі
Скульптура. Художній образ у об’єміСкульптура. Художній образ у об’ємі
Скульптура. Художній образ у об’ємі
 
teclado
tecladoteclado
teclado
 

Similar a Statement (20)

Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Presentación1
Presentación1Presentación1
Presentación1
 
Diapositivas objeto statement
Diapositivas objeto statementDiapositivas objeto statement
Diapositivas objeto statement
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Dispositivas de la clase statement
Dispositivas de la clase statementDispositivas de la clase statement
Dispositivas de la clase statement
 
statement
statementstatement
statement
 
Java con Base de Datos
Java con Base de Datos Java con Base de Datos
Java con Base de Datos
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
java con base de datos
java con base de datos java con base de datos
java con base de datos
 
ee
eeee
ee
 
JAVA CON BASE DE DATOS
JAVA CON BASE DE DATOSJAVA CON BASE DE DATOS
JAVA CON BASE DE DATOS
 
JAVA CON BASE DE DATOS
JAVA CON  BASE DE DATOSJAVA CON  BASE DE DATOS
JAVA CON BASE DE DATOS
 
Guia7 java
Guia7 javaGuia7 java
Guia7 java
 
Objeto Statement
Objeto StatementObjeto Statement
Objeto Statement
 
JDBC
JDBCJDBC
JDBC
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Notas clase
Notas claseNotas clase
Notas clase
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 

Más de Jhon Carlos Zambrano Goicochea (20)

ETL
ETLETL
ETL
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Vistas
VistasVistas
Vistas
 
COMANDOS DDL
COMANDOS DDLCOMANDOS DDL
COMANDOS DDL
 
Lenguaje transact
Lenguaje transactLenguaje transact
Lenguaje transact
 
E-Commerce
E-CommerceE-Commerce
E-Commerce
 
Jhon carlos
Jhon carlosJhon carlos
Jhon carlos
 
Reportes
ReportesReportes
Reportes
 
Objeto sqlcommand
Objeto sqlcommandObjeto sqlcommand
Objeto sqlcommand
 
Jhonzambrano-dhalinpalomino
Jhonzambrano-dhalinpalominoJhonzambrano-dhalinpalomino
Jhonzambrano-dhalinpalomino
 
Gestor de base de datos
Gestor de base de datosGestor de base de datos
Gestor de base de datos
 
Programación Orientada a Objetos
Programación Orientada  a ObjetosProgramación Orientada  a Objetos
Programación Orientada a Objetos
 
N capas visual basic
N capas visual basicN capas visual basic
N capas visual basic
 
Reportes
ReportesReportes
Reportes
 
PREPAREDSTATEMENT
PREPAREDSTATEMENTPREPAREDSTATEMENT
PREPAREDSTATEMENT
 
Control JTable con base de datos
Control JTable con base de datosControl JTable con base de datos
Control JTable con base de datos
 
ResultSet
ResultSetResultSet
ResultSet
 
Trabajo Connectar
Trabajo ConnectarTrabajo Connectar
Trabajo Connectar
 
Java con Base de Datos
Java con Base de DatosJava con Base de Datos
Java con Base de Datos
 

Último

LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 

Último (20)

Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 

Statement

  • 1.
  • 2.
  • 3. 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.
  • 4. 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");
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 8. 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
  • 9. 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.
  • 10. 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:
  • 11. EJEMPLOS EJEMPLO 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()) {
  • 12. System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3)); } // Cerramos la conexión a la base de datos. conexion.close();
  • 13. 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";
  • 14. // 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 {
  • 15. // 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);
  • 16. // 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. }
  • 17. // 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");
  • 18. // 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 {
  • 19. // 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.");}}}}