SlideShare una empresa de Scribd logo
PreparedStatement
Existe una manera de crear sentencias SQL una vez y usarla cada vez que quiera
correrla
Esto se logra a través de preparedstatement de JDBC
Esta interfaz permite construir las sentencias SQL requeridas una vez y
ejecutarlas cualquier número de veces en la aplicación
Cuando un objeto preparedstatement es creado, la sentencia SQL se da
como argumento
La sentencia SQL debe ser enviada al DBMS inmediatamente donde es
compilada una vez
PreparedStatement
En tiempo de construcción el preparedstatement no conoce los
valores que determinan el resultado de su ejecución
Solo las posiciones de dichos valores son conocidas en el momento
de su creación, las mismas son indicadas con el símbolo “?”
preparedstatement ps;
ps = conn.Preparedstatement("select * from tabla "+ "where c1=? ")
If(rs.Next())
system.Out.Println("encontrado");
else
system.Out.Println("no encontrado");
}catch(exception e){
system.Out.Println("error: "+e);
}finally{
try{
if(conn!=Null)
conn.Close();
}catch(exception e){}
}
}
}//fin de la clase PruebasJDBCprepared
Import java.Sql.*;
Public class pruebasjdbcprepared {
static string db="jdbc:db2:ibm";
Static string drv="com.Ibm.Db2.Jdbc.App.Db2driver";
Public static void main(string []args){
Connection conn = null;
Preparedstatement ps = null;
Try{
Class.Forname(drv);
Conn = drivermanager.
Getconnection(db,"db2admin","db2admin");
String sql = "select * from estudiante where
ci=?";
Ps = conn.Preparecall(sql);
Ps.Setint(1,123);
Resultset rs = ps.Executequery();
//Continúa...
E J E M P L O
Cuándo Utilizar Un Objeto Preparedstatement
 Si queremos ejecutar muchas veces un objeto Statement, reduciremos el tiempo de
ejecución si utilizamos un objeto PreparedStatement, en su lugar.
 La característica principal de un objeto PreparedStatement es que, al contrario que un
objeto Statement, se le entrega una sentencia SQL cuando se crea.
 La ventaja de esto es que en la mayoría de los casos, esta sentencia SQL se enviará al
controlador de la base de datos inmediatamente, donde será compilado.
 Como resultado, el objeto PreparedStatement no sólo contiene una sentencia SQL,
sino una sentencia SQL que ha sido recompilada.
 Esto significa que cuando se ejecuta la PreparedStatement, el controlador de base de
datos puede ejecutarla sin tener que compilarla primero.
 Aunque los objetos PreparedStatement se pueden utilizar con sentencias SQL sin
parámetros, probablemente nosotros utilizaremos más frecuentemente sentencias con
parámetros.
Crear Un Objeto Preparedstatement
Al igual que los objetos statement, creamos un objeto preparedstatement con un objeto connection.
Utilizando nuestra conexión con abierta en ejemplos anteriores, podríamos escribir lo siguiente para
crear un objeto preparedstatement que tome dos parámetros de entrada.
Preparedstatement updatesales = con.Preparestatement("UPDATE COFFEES SET SALES = ?
WHERE COF_NAME LIKE ?");
La variable updatesales contiene la sentencia SQL, "UPDATE COFFEES SET SALES = ? WHERE
COF_NAME LIKE ?", que también ha sido, en la mayoría de los casos, enviada al controlador de la
base de datos, y ha sido precompilado.
MÉTODO EXECUTEUPDATE().
 Para obtener datos de una tabla utilizando una sentencia SELECT con marcadores de
parámetros, utilice el método preparedstatement.Executequery. Este método devuelve
una tabla de resultados en un objeto resultset. Una vez obtenida la tabla de resultados, debe
utilizar métodos de resultset para desplazarse por la tabla de resultados y obtener los
valores de cada columna de cada fila.
Int executeupdate()
Ejecuta la instrucción sql en este objeto preparedstatement,que debe ser una declaración de
sqldata manipulation langueje (dml); como insert update o delete; o una declaración sql que no
devuelve nada, como una instruccion ddl.
LISTA DE SOBRECARGAS:
USO DE CALLABLESTATEMENT.
La sintaxis para invocar un procedimiento almacenado en JDBC se muestra a continuación: notar que
los corchetes indican que lo que se encuenta contenido en ellos es opcional, no ofroma parte de la
sintaxis.
{Call procedure_name[(?, ?, ...)]}
La sintaxis para un procedimiento que devuelve un resultado es:
{? = Call procedure_name[(?, ?, ...)]}
La sintaxis para un procedimiento almacenado sin parámetros se parece a algo como:
{Call procedure_name}
Callablestatement hereda los métodos de statement, los cuales tratan sentencias SQL en general, y
también hereda los métodos de preparedstatement, que tratan los parámetros IN. Todos los métodos
definidos para callablestatement tratan los parámetros OUT o los aspectos de salida de los parámetros
INOUT: registro de los tipos JDBC (tipos genéricos SQL) de los parámetros OUT, recuperación de
valores desde ellos o chequear si el valor devuelto es un JDBC NULL.
CREAR OBJETOS CALLABLESTATEMENT:
Los objetos CallableStatement se crean con el método prepareCall de
Connection. El siguiente ejemplo crea una instancia de CallableStatement que
contiene una llamada al procedimiento almacenado getTestData, con dos
argumentos y no devuelve resultados.
CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");
donde los encajes ‘?’ son parámetros IN, OUT ó INOUT dependiendo del
procedimiento getTestData. donde los encajes ‘?’ son parámetros IN, OUT ó
INOUT dependiendo del procedimiento getTestData.
CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");
donde los encajes ‘?’ son parámetros IN, OUT ó INOUT dependiendo del
procedimiento getTestData.
EJEMPLOS
Ejemplo1:el siguiente fragmento de código, donde con es un objeto connection, crea un objeto
preparedstatement que contiene una instrucción SQL:
//Creamos un objeto preparedstatement desde el objeto connection
Preparedstatement ps = con.Preparestatement("select * from propietarios where DNI=? And
nombre=? And edad=?"); //Seteamos los datos al prepared statement de la siguiente forma:
Ps.Setstring(1, dni);ps.Setstring(2, nombre);ps.Setint(3, edad);//ejecutamos el preparedstatement, en
este caso con executequery()resultset rs= ps.Executequery();
Ejemplo2:ejemplo de preparedstatement de consulta.
Por ejemplo supongamos que hay un campo de texto en el que el usuario puede introducir su
dirección de correo electrónico y con este dato se desea buscar al usuario: connection con =
drivermanager.Getconnection(url);string consulta = "SELECT usuario FROM registro WHERE email
like ?";preparedstatement pstmt = con.Preparestatement(consulta);pstmt.Setstring(1 ,
campotexto.Gettext());resultset resultado = ps.Executequery();
Ejemplo3:Ejemplo de PreparedStatement de modificación.
En el siguiente ejemplo se va a insertar un nuevo registro en una tabla:
Connection con = DriverManager.getConnection(url);String insercion = "INSERT
INTO registro(usuario , email , fechaNac) values ( ? , ? , ? )");PreparedStatement
pstmt = con.prepareStatement(consulta);
String user = . . . ;String email = . . . ;Date edad = . . . ; //O int
edad;pstmt.setString(1 , user);pstmt.setString(2 , email);pstmt.setDate(3 , edad); //
setInt(3, edad);ps.executeUpdate();
Prepared statement

Más contenido relacionado

La actualidad más candente (20)

Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Objeto prepared statement
Objeto prepared statementObjeto prepared statement
Objeto prepared statement
 
Sql procedimientos-almacenados
Sql procedimientos-almacenadosSql procedimientos-almacenados
Sql procedimientos-almacenados
 
9. Uso De Procedimientos Almacenados
9.  Uso De Procedimientos Almacenados9.  Uso De Procedimientos Almacenados
9. Uso De Procedimientos Almacenados
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
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
 
Statement
StatementStatement
Statement
 
preparedStatement
preparedStatementpreparedStatement
preparedStatement
 
Preparestatement
PreparestatementPreparestatement
Preparestatement
 
LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.LABORATORIO DE PROGRAMACIÓN I.
LABORATORIO DE PROGRAMACIÓN I.
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Preparedstatement(grupal)
Preparedstatement(grupal)Preparedstatement(grupal)
Preparedstatement(grupal)
 
Prepared Statement
Prepared StatementPrepared Statement
Prepared Statement
 
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
 
Statement
Statement Statement
Statement
 

Similar a Prepared statement (20)

Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Statement
StatementStatement
Statement
 
PREPAREDSTATEMENT
PREPAREDSTATEMENTPREPAREDSTATEMENT
PREPAREDSTATEMENT
 
Statement
StatementStatement
Statement
 
PreparedStatement
PreparedStatementPreparedStatement
PreparedStatement
 
Lpiii tema5 - jdbc
Lpiii tema5 - jdbcLpiii tema5 - jdbc
Lpiii tema5 - jdbc
 
Statement
StatementStatement
Statement
 
Diapositivas objeto statement
Diapositivas objeto statementDiapositivas objeto statement
Diapositivas objeto statement
 
Laboratorio de Programacion
Laboratorio de ProgramacionLaboratorio de Programacion
Laboratorio de Programacion
 
Statement
StatementStatement
Statement
 
ee
eeee
ee
 
Guia7 java
Guia7 javaGuia7 java
Guia7 java
 
Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
 
Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)
 
Presentación1
Presentación1Presentación1
Presentación1
 
Statement
StatementStatement
Statement
 
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-20063. Curso Java JDBC (Bases de datos) - Curso 2005-2006
3. Curso Java JDBC (Bases de datos) - Curso 2005-2006
 

Último

EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesPABLOCESARGARZONBENI
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerRobertoCarrancioFern
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfAlejandraCasallas7
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometriasofiasonder
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respetocdraco
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfjjfch3110
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónJuanPrez962115
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareAndres Avila
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 

Último (20)

EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 

Prepared statement

  • 1.
  • 2.
  • 3. PreparedStatement Existe una manera de crear sentencias SQL una vez y usarla cada vez que quiera correrla Esto se logra a través de preparedstatement de JDBC Esta interfaz permite construir las sentencias SQL requeridas una vez y ejecutarlas cualquier número de veces en la aplicación Cuando un objeto preparedstatement es creado, la sentencia SQL se da como argumento La sentencia SQL debe ser enviada al DBMS inmediatamente donde es compilada una vez
  • 4. PreparedStatement En tiempo de construcción el preparedstatement no conoce los valores que determinan el resultado de su ejecución Solo las posiciones de dichos valores son conocidas en el momento de su creación, las mismas son indicadas con el símbolo “?” preparedstatement ps; ps = conn.Preparedstatement("select * from tabla "+ "where c1=? ")
  • 5. If(rs.Next()) system.Out.Println("encontrado"); else system.Out.Println("no encontrado"); }catch(exception e){ system.Out.Println("error: "+e); }finally{ try{ if(conn!=Null) conn.Close(); }catch(exception e){} } } }//fin de la clase PruebasJDBCprepared Import java.Sql.*; Public class pruebasjdbcprepared { static string db="jdbc:db2:ibm"; Static string drv="com.Ibm.Db2.Jdbc.App.Db2driver"; Public static void main(string []args){ Connection conn = null; Preparedstatement ps = null; Try{ Class.Forname(drv); Conn = drivermanager. Getconnection(db,"db2admin","db2admin"); String sql = "select * from estudiante where ci=?"; Ps = conn.Preparecall(sql); Ps.Setint(1,123); Resultset rs = ps.Executequery(); //Continúa... E J E M P L O
  • 6. Cuándo Utilizar Un Objeto Preparedstatement  Si queremos ejecutar muchas veces un objeto Statement, reduciremos el tiempo de ejecución si utilizamos un objeto PreparedStatement, en su lugar.  La característica principal de un objeto PreparedStatement es que, al contrario que un objeto Statement, se le entrega una sentencia SQL cuando se crea.  La ventaja de esto es que en la mayoría de los casos, esta sentencia SQL se enviará al controlador de la base de datos inmediatamente, donde será compilado.  Como resultado, el objeto PreparedStatement no sólo contiene una sentencia SQL, sino una sentencia SQL que ha sido recompilada.  Esto significa que cuando se ejecuta la PreparedStatement, el controlador de base de datos puede ejecutarla sin tener que compilarla primero.  Aunque los objetos PreparedStatement se pueden utilizar con sentencias SQL sin parámetros, probablemente nosotros utilizaremos más frecuentemente sentencias con parámetros.
  • 7. Crear Un Objeto Preparedstatement Al igual que los objetos statement, creamos un objeto preparedstatement con un objeto connection. Utilizando nuestra conexión con abierta en ejemplos anteriores, podríamos escribir lo siguiente para crear un objeto preparedstatement que tome dos parámetros de entrada. Preparedstatement updatesales = con.Preparestatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?"); La variable updatesales contiene la sentencia SQL, "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?", que también ha sido, en la mayoría de los casos, enviada al controlador de la base de datos, y ha sido precompilado.
  • 8.
  • 9. MÉTODO EXECUTEUPDATE().  Para obtener datos de una tabla utilizando una sentencia SELECT con marcadores de parámetros, utilice el método preparedstatement.Executequery. Este método devuelve una tabla de resultados en un objeto resultset. Una vez obtenida la tabla de resultados, debe utilizar métodos de resultset para desplazarse por la tabla de resultados y obtener los valores de cada columna de cada fila. Int executeupdate() Ejecuta la instrucción sql en este objeto preparedstatement,que debe ser una declaración de sqldata manipulation langueje (dml); como insert update o delete; o una declaración sql que no devuelve nada, como una instruccion ddl.
  • 11. USO DE CALLABLESTATEMENT. La sintaxis para invocar un procedimiento almacenado en JDBC se muestra a continuación: notar que los corchetes indican que lo que se encuenta contenido en ellos es opcional, no ofroma parte de la sintaxis. {Call procedure_name[(?, ?, ...)]} La sintaxis para un procedimiento que devuelve un resultado es: {? = Call procedure_name[(?, ?, ...)]} La sintaxis para un procedimiento almacenado sin parámetros se parece a algo como: {Call procedure_name} Callablestatement hereda los métodos de statement, los cuales tratan sentencias SQL en general, y también hereda los métodos de preparedstatement, que tratan los parámetros IN. Todos los métodos definidos para callablestatement tratan los parámetros OUT o los aspectos de salida de los parámetros INOUT: registro de los tipos JDBC (tipos genéricos SQL) de los parámetros OUT, recuperación de valores desde ellos o chequear si el valor devuelto es un JDBC NULL.
  • 12. CREAR OBJETOS CALLABLESTATEMENT: Los objetos CallableStatement se crean con el método prepareCall de Connection. El siguiente ejemplo crea una instancia de CallableStatement que contiene una llamada al procedimiento almacenado getTestData, con dos argumentos y no devuelve resultados. CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}"); donde los encajes ‘?’ son parámetros IN, OUT ó INOUT dependiendo del procedimiento getTestData. donde los encajes ‘?’ son parámetros IN, OUT ó INOUT dependiendo del procedimiento getTestData. CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}"); donde los encajes ‘?’ son parámetros IN, OUT ó INOUT dependiendo del procedimiento getTestData.
  • 13.
  • 14. EJEMPLOS Ejemplo1:el siguiente fragmento de código, donde con es un objeto connection, crea un objeto preparedstatement que contiene una instrucción SQL: //Creamos un objeto preparedstatement desde el objeto connection Preparedstatement ps = con.Preparestatement("select * from propietarios where DNI=? And nombre=? And edad=?"); //Seteamos los datos al prepared statement de la siguiente forma: Ps.Setstring(1, dni);ps.Setstring(2, nombre);ps.Setint(3, edad);//ejecutamos el preparedstatement, en este caso con executequery()resultset rs= ps.Executequery(); Ejemplo2:ejemplo de preparedstatement de consulta. Por ejemplo supongamos que hay un campo de texto en el que el usuario puede introducir su dirección de correo electrónico y con este dato se desea buscar al usuario: connection con = drivermanager.Getconnection(url);string consulta = "SELECT usuario FROM registro WHERE email like ?";preparedstatement pstmt = con.Preparestatement(consulta);pstmt.Setstring(1 , campotexto.Gettext());resultset resultado = ps.Executequery();
  • 15. Ejemplo3:Ejemplo de PreparedStatement de modificación. En el siguiente ejemplo se va a insertar un nuevo registro en una tabla: Connection con = DriverManager.getConnection(url);String insercion = "INSERT INTO registro(usuario , email , fechaNac) values ( ? , ? , ? )");PreparedStatement pstmt = con.prepareStatement(consulta); String user = . . . ;String email = . . . ;Date edad = . . . ; //O int edad;pstmt.setString(1 , user);pstmt.setString(2 , email);pstmt.setDate(3 , edad); // setInt(3, edad);ps.executeUpdate();