sábado, 17 de diciembre de 2016

IREPORT





Escuela Profesional De Ingeniería De Sistemas Y Telemática


              INTEGRANTES:

                 - CRISTHIAN SERGIO KAYAP YAGKIKAT

                 - INGRID LESLY CORONEL ACUÑA


          DOCENTE: PORRO CHULLI, MARCO AURELIO


REPORTES
Los reportes son los que muestran la situación de las operaciones regulares de la empresa para que los directivos puedan controlar, organizar, planear y dirigir. Los reportes se pueden visualizar, exportar a otros formatos como PDF, HTML, XML, etc. y también se pueden imprimir en papel.
*      Instalación de ireport en netbeans
Al descargar el .rar Extraemos los archivos(son 4)
En netbeans nos dirigimos a herramientas>>complementos
Damos agregar plugins


Vamos a la carpeta donde hemos extraído los archivos y lo seleccionamos todos.
Damos clic en instalar
Damos clic en siguiente



Aceptas la licencia y damos clic en instalar y esperamos que se instale los programas seleccionados.


Terminar
Ahora vemos en la pestaña instalado y vemos los programas instalados con éxito


CONFIGURACION DE DATASOURCE
Ahora que tenemos nuestros datos crearemos un "datasource" en iReport para poder acceder a nuestros datos y hacer pruebas directamente, sin necesidad de una aplicación Java (por el momento). Para crear este datasource hacemos clic en el ícono "Report Datasources" ubicado en la barra de herramientas de iReport:



Con lo que se abrirá la ventana de "Connections / Datasources" que en este momento debe contener solo un "Empty datasource" y la conexión a una base de datos de prueba en HSQLDB. Ahora hacemos clic en el botón "New" para crear nuestro nuevo datasource.


En la nueva ventana que se abre seleccionamos "Database JDBC connection" y presionamos el botón "Next". En la siguiente ventana debemos proporcionar algunos datos como el nombre se le dará al datasource y los datos para realizar la conexión de la base de datos. Después de llenar estos datos su ventana debe haber quedado más o menos como la siguiente (recuerden usar el "JDBC Driver" que corresponda al manejador de base de datos que estén usando:



Antes de guardar esta configuración hagan clic en el botón "Test" para probar que todos los datos proporcionados son correctos. Si todo ha salido bien, al hacer clic en el botón "Save" la ventana actual debe cerrarse y nuestro datasource debe estar ahora en la ventana "Connections / Datasources".


   CREACIÓN DE REPORTES USANDO WIZARD, ARCHIVO JRXML
Ahora pasaremos a crear nuestro nuevo reporte. Esta será la primer y única ocasión en la que haremos uso del "Report Wizard" para ayudarnos a generar el reporte. Para esto vamos al menú "File -> New...". Con esto se abrirá la ventana de "New File" en la que seleccionaremos el formato de nuestro reporte. En mi caso seleccionaré la plantilla "Wood" aunque pueden seleccionar la que ustedes deseen, y hacemos clic en el botón "Launch Report Wizard"


Este wizard nos ayudará a crear un reporte 100% funcional en 6 pasos (en realidad 5 ya que empezamos directamente en el paso 2) que podremos ver desde el mismo iReport sin necesidad de escribir una solo línea de código Java. Estos 6 pasos son:
  
1. Selección de la ubicación en la que se guardará nuestro reporte.
2. Selección del datasource e introducción del query para obtener los datos que nos interesan.
3. Selección de los datos que queremos mostrar en el reporte.
4. Creación de grupos para el reporte (se explicará en un post posterior).
5. Selección del layout o acomodo de los datos en el reporte
6. Felicitación por tenerminar nuestro reporte =D.
Los pasos interesantes son el 3 y el 4, así que será en estos en los que nos enfocaremos más.
El paso 1 se realiza de forma automática, así que no tenemos mucho que hacer en él. En el paso 2 (en donde comenzamos) seleccionamos el directorio en el que queremos guardar nuestro reporte y el nombre que tendrá.


CAMPOS CALCULADOS EN IREPORT
Paso 1:
Creamos un nuevo Reporte, Seleccionamos nuestra Base de Datos, las tablas o visitas; de las cuales queremos elaborar dicho reporte y nos mostrara la siguiente ventana.


Paso 2: Seleccionamos los campos que son necesarios para mi Reporte, y vamos arrastrando uno a uno hacia la fila que dice “Detalle”; automáticamente irán apareciendo los nombres del encabezado de cada columna de esta manera cómo podemos ver en la imagen.

Paso 3: Arrastramos el campo para el cual deseamos hacer un campo calculado en nuestro reporte y lo arrastramos hacia la fila de dice “Page Footer”, en este caso se realizará la suma total de todos los sueldos, de un empleado, como podemos visualizar en la imagen.


Paso 4: Como proceso final si podemos ver en esta visualización de nuestro reporte, en donde apunta la flecha del cursor, notamos que hay un campo calculado del Total de todos los sueldos. Observemos.


EJECUCIÓN DE REPORTES, ARCHIVO JASPER
Archivo Jasper está considerada como una de las mejores bibliotecas de software libre para generar reportes [1]. Tiene la habilidad de entregar contenido enriquecido al monitor, a la impresora o a ficheros PDF, HTML, XLS, CSV y XML. Está escrito completamente en Java y puede ser usado en gran variedad de aplicaciones de Java, incluyendo Java EE o aplicaciones web, para generar contenido dinámico. Su propósito principal es ayudar a crear documentos de tipo páginas, preparados para imprimir en una forma simple y flexible.
JasperReports se usa comúnmente con iReport Designer [2], un constructor / diseñador de informes visual, poderoso, intuitivo y fácil de usar. Este instrumento permite que los usuarios desarrollen visualmente informes complejos con cartas, imágenes, subinformes y otros [3]. iReport está además integrado con JFreeChart, una de la biblioteca gráficas OpenSource más difundida para Java. Los datos para imprimir pueden ser recuperados por varias vías como pueden ser: JDBC, TableModels, JavaBeans, XML, etc.
Entre las principales características de iReport podemos destacar las siguientes:
100% escrito en JAVA y además OPENSOURCE y gratuito.
Maneja todas las etiquetas de JasperReports.
Permite diseñar con sus propias herramientas: rectángulos, líneas, elipses, campos de los textfields, cartas, subreports (subreportes).
Soporta internacionalización nativamente.
Browser de la estructura del documento.
Recopilador y exportador integrados.
Soporta JDBC.
Soporta JavaBeans como orígenes de datos (éstos deben implementar la interface JRDataSource).
Incluye Wizard’s (asistentes) para crear automáticamente informes, plantillas y sub-reportes.
FACILIDAD DE INSTALACIÓN.
Estas potencialidades se pueden combinar con JasperServer que proporciona una interfaz basada en web para gestionar, programar y ejecutar los informes, un repositorio para almacenar todos los recursos del informe como imágenes, fuentes, fuentes de datos y mucho más, un servicio de seguridad para decidir quién puede ejecutar que informe, y un servicio web API para ejecutar los informes de aplicaciones externas (por lo que puede generar informes de cualquier tipo de entorno, como PHP o. NET).
La herramienta iReport Designer le permite diseñar informes JasperReports, así como también permite ejecutarlos y generar la salida en una aplicación Java, y JasperServer permite a los usuarios finales y las aplicaciones externas acceder, ver y publicar sus informes de forma segura.
Archivos Jasper. Hay un montón de tipos de fuentes de datos, es posible llenar un archivo Jasper de una consulta SQL, un archivo XML, un archivo csv, una consulta HQL (Hibernate Query Language), una colección de JavaBeans, etc .. Si usted no encuentra una fuente de datos adecuada, JasperReports es muy flexible y permite que usted escriba su propio origen de datos personalizado. Con un archivo de Jasper y una fuente de datos, JasperReports es capaz de generar el documento final en el formato que prefiera.
iReport Designer también permite configurar las fuentes de datos y utilizarlas para probar sus informes. En muchos casos, los asistentes por datos pueden ayudarle a diseñar sus informes mucho más rápido. iReport Designer incluye el propio motor JasperReports para hacerle una vista previa del resultado del informe, probar y refinar sus informes.

Enlace de reporte con ventana JDialog. Uso de JasperViewer Ejemplo.





RESUMEN
REPORTES:
Los reportes son los que muestran la situación de las operaciones regulares de la empresa para que los directivos puedan controlar, organizar, planear y dirigir.
Instalación de ireport en netbeans
Al descargar el .rar Extraemos los archivos(son 4)
En netbeans nos dirigimos a herramientas>>complementos
Damos agregar plugins
Vamos a la carpeta donde hemos extraído los archivos y lo seleccionamos todos.
Damos clic en instalar
Damos clic en siguiente
Aceptas la licencia y damos clic en instalar y esperamos que se instale los programas seleccionados.
Terminar
Ahora vemos en la pestaña instalado y vemos los programas instalados con éxito
Reiniciamos Netbeans
Vemos en la ventana principal, complementos instalados de Jasper Report
Ahora agregaremos las librerías al proyecto en el cual usaremos iReport
Configuracion De Datasource
Ahora que tenemos nuestros datos crearemos un "datasource" en iReport para poder acceder a nuestros datos y hacer pruebas directamente, sin necesidad de una aplicación Java (por el momento). Para crear este datasource hacemos clic en el ícono "Report Datasources" ubicado en la barra de herramientas de iReport:
Con lo que se abrirá la ventana de "Connections / Datasources" que en este momento debe contener solo un "Empty datasource" y la conexión a una base de datos de prueba en HSQLDB. Ahora hacemos clic en el botón "New" para crear nuestro nuevo datasource.
En la nueva ventana que se abre seleccionamos "Database JDBC connection" y presionamos el botón "Next". En la siguiente ventana debemos proporcionar algunos datos como el nombre se le dará al datasource y los datos para realizar la conexión de la base de datos. Después de llenar estos datos su ventana debe haber quedado más o menos como la siguiente (recuerden usar el "JDBC Driver" que corresponda al manejador de base de datos que estén usando:
Antes de guardar esta configuración hagan clic en el botón "Test" para probar que todos los datos proporcionados son correctos. Si todo ha salido bien, al hacer clic en el botón "Save" la ventana actual debe cerrarse y nuestro datasource debe estar ahora en la ventana "Connections / Datasources".
SUMMARY
Reports:
The reports are the ones that show the situation of the regular operations of the company so that the executives can control, organize, plan and direct.
Installing ireport on netbeans
When downloading the .rar We extract the files (they are 4)
In netbeans we go to tools >> add-ons
Let's add plugins
Let's go to the folder where we extracted the files and select it all.
Click to install
Click Next
You accept the license and click on install and wait for the selected programs to be installed.
End up
Now we see in the installed tab and we see the programs installed successfully
Restart Netbeans
We see in the main window, installed add-ons of Jasper Report
Now we will add the libraries to the project in which we will use iReport
Datasource Configuration
Now that we have our data we will create a datasource in iReport to be able to access our data and do tests directly, without needing a Java application (for the moment). To create this datasource, click on the "Report Datasources" icon located on the iReport toolbar:
This will open the "Connections / Datasources" window which should contain only an "Empty datasource" and the connection to a test database in HSQLDB. Now we click on the "New" button to create our new datasource.
In the new window that opens we select "Database JDBC connection" and press the "Next" button. In the following window we must provide some data as the name will be given to the datasource and the data to make the connection of the database. After completing this data your window should have been more or less like the following (remember to use the "JDBC Driver" that corresponds to the database manager you are using:
Before saving this configuration click the "Test" button to prove that all the data provided is correct. If everything went well, when clicking the "Save" button the current window should close and our datasource should now be in the "Connections / Datasources" window.

RECOMENDACIONES
Para generar reportes se debe tener muy en cuenta la base de datos que estamos utilizando y los campos más necesarios y en el orden deseado.

CONCLUSIONES
La herramienta iReport es un constructor / diseñador permite crear cualquier tipo de informe de una manera sencilla y rápida a través de una interfaz gráfica intuitiva, diseñada tanto para gente que no está familiarizada con esta tecnología, y que desconoce la sintaxis XML de JasperReports, como a usuarios expertos que ya conocían este lenguaje, ahorrándoles tiempo durante el desarrollo de informes muy elaborados.

APRECIACIÓN DEL EQUIPO
Desde el punto de vista del grupo se afirma que iReport es una herramienta en código abierto de generación de informes muy útil que nos permite generar información detallada en formato PDF, HTML, XLS, CSV o XML. Ha sido desarrollada completamente en Java, por lo que puede ser usada en una amplia variedad de aplicaciones Java para generar contenido dinámico.

GLOSARIO DE TÉRMINOS
Plugins.- Un plugin es aquella aplicación que, en un programa informático, añade una funcionalidad adicional o una nueva característica al software. En nuestro idioma, por lo tanto, puede nombrarse al plugin como un complemento.
Reiniciar. - Reiniciar el ordenador o computadora es el proceso de recargar el sistema operativo de una computadora.
Wizard.- Wizard es el que te indica o te guía en el procedimiento durante una instalación de un programa o aplicación.
Constructor.- Un constructor es una subrutina cuya misión es inicializar un objeto de una clase.
LINKOGRAFÍA

LINK DE DE DIAPOSTIVAS SOBRE IREPORT
http://es.slideshare.net/INGRIDLESLYCORONELAC/ireport-70236314



PREPAREDSTATEMENT




Escuela Profesional De Ingeniería De Sistemas Y Telemática


              INTEGRANTES:

                 - CRISTHIAN SERGIO KAYAP YAGKIKAT

                 - INGRID LESLY CORONEL ACUÑA


          DOCENTE: PORRO CHULLI, MARCO AURELIO

PREPAREDSTATEMENT

1.  CONTENIDO.
1.1. Definición.
Este interfaz, al igual que el interfaz Statement, nos permite ejecutar sentencias SQL sobre una conexión establecida con una base de datos. Pero en este caso vamos a ejecutar sentencias SQL más especializadas, estas sentencias SQL se van a denominar sentencias SQL precompiladas y van a recibir parámetros de entrada.
El interfaz PreparedStatement hereda del interfaz Statement y se diferencia de él de dos maneras:
Las instancias de PreparedStatement contienen sentencias SQL que ya han sido compiladas.
Esto es lo que hace a una sentencia "prepared” (preparada).
La sentencia SQL que contiene un objeto PreparedStatement puede contener uno o más parámetros de entrada. Un parámetro de entrada es aquél cuyo valor no se especifica cuando la sentencia es creada, en su lugar la sentencia va a tener un signo de interrogación (?) por cada parámetro de entrada. Antes de ejecutarse la sentencia se debe especificar un valor para cada uno de los parámetros a través de los métodos setXXX apropiados. Estos métodos setXXX los añade el interfaz PreparedStatement.

Debido a que las sentencias de los objetos PrepareStatement están precompiladas su ejecución será más rápida que la de los objetos Statement. Por lo tanto, una sentencia SQL que va a ser ejecutada varias veces se suele crear como un objeto PreparedStatement para ganar en eficiencia. También se utilizará este tipo de sentencias para pasarle parámetros de entrada a las sentencias SQL.
Al heredar del interfaz Statement, el interfaz PreparedStatement hereda todas funcionalidades de Statement. Además, añade una serie de métodos que permiten asignar un valor a cada uno de los parámetros de entrada de este tipo de sentencias.
Los métodos execute(), executeQuery() y executeUpdate() son sobrecargados y en esta versión, esdecir, para los objetos PreparedStatement no toman ningún tipo de argumentos, de esta forma, a estos métodos nunca se les deberá pasar por parámetro el objeto String que representaba la sentencia SQL a ejecutar. En este caso, un objeto PreparedStatement ya es una sentencia SQL por sí misma, adiferencia de lo que ocurría con las sentencias Statement que poseían un significado sólo en el momento en el que se ejecutaban.
Son muy útiles cuando una sentencia SQL se ejecuta muchas veces cambiando sólo algunos valores.

•    Se utiliza para enviar sentencias SQL precompiladas con uno o más parámetros.
•   Se crea un objeto PreparedStatement especificando la plantilla y los lugares donde irán los parámetros.
•  Los parámetros son especificados después utilizando los métodos setXXX(.) indicando el número de parámetro y el dato a insertar en la sentencia.
•    La sentencia SQL y los parámetros se envían a la base de datos cuando se llama al método: executeXXX().

1.1.1.   El interfaz PreparedStatement.
A continuación se ofrece la acostumbrada referencia rápida de los métodos del interfaz que nos ocupa.
•  void adBatch(): añade un conjunto de parámetros al conjunto de comandos que se ejecutará en modo batch.
•   void clearParameters(): elimina los valores de los parámetros actuales.
•   boolean execute(): ejecuta cualquier tipo de sentencia SQL.
•  ResultSet executeQuery(): ejecuta la sentencia SQL representada por el objeto PreparedStatement, devolviendo un objeto ResultSet con el resultado de la ejecución de la consulta.
• int executeUpdate(): ejecuta una sentencia SQL del tipo INSERT, UPDATE o DELETE.
• ResultSetMetaData getMetaData(): devuelve un objeto ResultSetMetaData que contendrá el número, tipos y propiedades de las columnas de un objeto ResultSet.
    Como ya hemos adelantado el interfaz PreparedStatement presenta una serie de métodos setXXX() que permiten asignar valores a los parámetros de la sentencia SQL correspondiente.
    Los distintos métodos setXXX() se muestran a continuación, los argumentos comunes que presentan estos métodos es el índice que indica el número de orden del parámetro y el valor que se le desea dar a ese parámetro.
•      void setArray(int índiceParámetro, Array valor)
•      void setAsciiStream(int índiceParámetro, InputStream valor, int longitud)
•      void setBigDecimal(int índiceParámetro, BigDecimal valor)
•      void setBinaryStream(int índiceParámetro, InputStream valor, int longitud)
•      void setBlob(int índiceParámetro, Blob valor)
•      void setBoolean(int índiceParámetro, boolean valor)

1.1.2.   CREANDO OBJETOS PREPAREDSTATEMENT      

 Para crear un objeto PreparedStatement se debe lanzar el método prepareStatement() del interfaz Connection sobre el objeto que representa la conexión establecida con la base de datos. En el siguiente ejemplo se puede ver como se crearía un objeto PreparedStatement que representa una sentencia SQL con dos parámetros de entrada.
El objeto sentencia contendrá la sentencia SQL indicada, la cual, ya ha sido enviada al DBMS y ya ha sido preparada para su ejecución. En este caso se ha creado una sentencia SQL con dos parámetros de entrada.
Connection conexion=DriverManager.getConnection(url,"pepe","xxxx");
PreparedStatement sentencia=conexion.prepareStatement("UPDATE MiTabla SET nombre =?"+"WHERE clave =?");

1.1.2.   UTILIZANDO LOS PARÁMETROS DE ENTRADA

Antes de poder ejecutar un objeto PreparedStatement se debe asignar un valor para cada uno de sus parámetros. Esto se realiza mediante la llamada a un método setXXX, donde XXX es el tipo apropiado para el parámetro. Por ejemplo, si el parámetro es de tipo long, el método a utilizar será setLong().
El primer argumento de los métodos setXXX es la posición ordinal del parámetro al que se le va a asignar valor, y el segundo argumento es el valor a asignar. Por ejemplo el Código fuente 109 crea un objeto PreparedStatement y acto seguido le asigna al primero de sus parámetros un valor de tipo String y al segundo un valor de tipo int. 
Connection conexion=DriverManager.getConnection(url);
PreparedStatement sentencia=conexion.prepareStatement("UPDATE MiTabla SET nombre = ? "+"WHERE clave =?");
sentencia.setString(1,"Pepe");
sentencia.setInt(2,157);
Una vez que se ha asignado unos valores a los parámetros de entrada de una sentencia, el objeto PreparedStatement se puede ejecutar múltiples veces, hasta que sean borrados los parámetros con el método clearParameters(), aunque no es necesario llamar a este método cuando se quieran modificar los parámetros de entrada, sino que al lanzar los nuevos métodos setXXX los valores de los parámetros serán reemplazados.
El Código muestra como una vez creado un objeto PreparedStatement se ejecuta variasveces y se le cambian los parámetros.
Connection conexion=DriverManager.getConnection(url);
PreparedStatement sentencia=conexion.prepareStatement("UPDATE MiTabla SET Id = ?"+"WHERE num=?");
for (int i=0;i<20;i++){
sentencia.setInt(1,i);
sentencia.setInt(2,i);
sentencia.executeUpdate();
}

Como ya se había comentado anteriormente XXX en un método setXXX es un tipo de Java. Es implícitamente un tipo JDBC (un tipo SQL genérico) ya que el driver transformará el tipo Java a suvtipo JDBC correspondiente y acto seguido lo enviará a la base de datos. Así por ejemplo, el siguiente fragmento asigna a un parámetro de entrada el valor 44 del tipo Java short:
sentencia.setShort(2,44);
El driver enviará 44 a la base de datos como un SMALLINT de JDBC, que es la transformación estándar para un short de Java. Se realiza la transformación inversa que realizaban los métodos
getXXX.
Es responsabilidad del programador asegurarse de que el tipo Java de cada parámetro de entrada se corresponde con un tipo compatible JDBC que será esperado por la base de datos.
El programador puede convertir explícitamente un parámetro de entrada a un tipo JDBC determinado utilizando para ello el método setObject().
El driver transformará el objeto de la clase Object al tipo JDBC específico antes de enviarlo a la base de datos, si no se le indica el tipo JDBC el driver lo transformará al tipo JDBC que le corresponda.
La diferencia entre el método setObject() y los métodos setXXX es que los primeros realizan la transformación de tipos Object de Java a tipos JDBC y los segundos de tipos de Java a tipos de JDBC.
JDBC define una serie de identificadores de tipos SQL genéricos en la clase java.sql.Types. Estos tipos han sido diseñados para representar los tipos SQL más comunes. Normalmente programando con JDBC se podrá referenciar tipos SQL genéricos usando estos tipos de JDBC sin tener en cuenta el tipo SQL exacto.
La capacidad que posee el método setObject() de aceptar cualquier objeto de Java permite que un programa sea genérico y acepte parámetros de entrada en tiempo de ejecución. En esta situación el tipo de objeto es desconocido en tiempo de compilación.
El método setNull() nos permite enviar un JDBC NULL a la base de datos como un parámetro de entrada, sin embargo, se debe especificar el tipo JDBC del parámetro.
En este caso la conversión de tipos de datos se realiza al contrario que con los métodos getXXX del interfaz ResultSet, la Tabla 7 muestra de conversión de tipos SQL genéricos o tipos JDBC a tipos de datos de Java.

Tipos Java  Tipos JDBC
String VARCHAR or LONGVARCHAR
ava.math.BigDecimal      NUMERIC
boolean       BIT
byte   TINYINT
short  SMALLINT
int      INTEGER
long   BIGINT
float   REAL
double         DOUBLE
byte[] VARBINARY, LONGVARBINARY,
BINARY
java.sql.Date        DATE
java.sql.Time        TIME
ava.sql.Timestamp         TIMESTAMP
Clob   CLOB
Blob   BLOB
Array ARRAY
Struct STRUCT
Ref    REF
Clase Java  JAVA_OBJECT

MÉTODO EXECUTEUPDATE()

Ejecuta la instrucción SQL determinada, que puede ser una instrucción INSERT, UPDATE o DELETE; o una instrucción SQL que no devuelve nada, como una instrucción DDL de SQL. Desde el controlador JDBC 3.0 de Microsoft SQL Server, executeUpdate devolverán el número correcto de filas.
•        Lista de sobrecargas
Nombre       Descripción
executeUpdate (java.lang.String)       Ejecuta la instrucción SQL determinada, que puede ser una instrucción INSERT, UPDATE, DELETE o MERGE; o una instrucción SQL que no devuelve nada, como una instrucción DDL de SQL.
executeUpdate (java.lang.String, int) Ejecuta la instrucción SQL especificada y señala al Controlador JDBC de Microsoft para SQL Server con la marca indicada sobre si las claves generadas automáticamente producidas por este objeto SQLServerStatement deben estar disponibles para su recuperación.
executeUpdate (java.lang.String, int[])         Ejecuta la instrucción SQL determinada e indica al controlador JDBC que las claves que se han generado automáticamente y están presentes en la matriz determinada deben estar disponibles para su recuperación.
executeUpdate (java.lang.String, java.lang.String[])        Ejecuta la instrucción SQL determinada e indica al controlador JDBC que las claves que se han generado automáticamente y están presentes en la matriz determinada deben estar disponibles para su recuperación.
El executeUpdate( ) método funciona igual que el execute( ) método, excepto que devuelve un valor entero que indica el número de filas afectadas por la instrucción SQL. El executeUpdate() método combina eficazmente el execute() y getUpdateCount( ) métodos en una sola llamada:
int RSLT = 0;
Declaración stmt = null;
tratar {
  stmt = conn.createStatement ();
  RSLT = stmt.executeUpdate ( "eliminar persona");
  . . .
} 
EJEMPLOS

EJEMPLO N°01

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

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

EJEMPLO N°02

Este Es Un ejemplo de utilización del Método executeUpdate del Objeto Declaración.
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.

Este interfaz, al igual que el interfaz Statement, nos permite ejecutar sentencias SQL sobre una conexión establecida con una base de datos.
Pero en este caso vamos a ejecutar sentencias SQL más especializadas, estas sentencias SQL se van a denominar sentencias SQL precompiladas y van a recibir parámetros de entrada.
El interfaz PreparedStatement hereda del interfaz Statement y se diferencia de él de dos maneras: • Las instancias de PreparedStatement contienen sentencias SQL que ya han sido compiladas.
Esto es lo que hace a una sentencia "prepared” (preparada).
La sentencia SQL que contiene un objeto PreparedStatement puede contener uno o más parámetros de entrada.
Un parámetro de entrada es aquél cuyo valor no se especifica cuando la sentencia es creada, en su lugar la sentencia va a tener un signo de interrogación (?) por cada parámetro de entrada.
Uso de callablestatement El último tipo de sentencias que podemos utilizar en JDBC son las sentencias CallableStatement.
Este interfaz hereda del interfaz PreparedStatement y ofrece la posibilidad de manejar parámetros de salida y de realizar llamadas a procedimientos almacenados de la base de datos. Un procedimiento almacenado se encuentra dentro de una base de datos; la llamada a un procedimiento es lo que contiene un objeto CallableStatement.

SUMARY.

 This interface, like the Statement interface, allows us to execute SQL statements over a connection established with a database.
But in this case we will execute more specialized SQL statements, these SQL statements are going to be called precompiled SQL statements and will receive input parameters.
The PreparedStatement interface inherits from the Statement interface and differs from it in two ways: • The PreparedStatement instances contain SQL statements that have already been compiled.
This is what makes a "prepared" statement.
The SQL statement that contains a PreparedStatement object may contain one or more input parameters.
An input parameter is one whose value is not specified when the statement is created, instead the statement will have a question mark (?) For each input parameter.
Using callablestatement The last type of statements we can use in JDBC are the CallableStatement statements.
This interface inherits from the PreparedStatement interface and offers the possibility of handling output parameters and making calls to database stored procedures. A stored procedure is inside a database; The call to a procedure is what a CallableStatement object contains.

RECOMENDACIONES:

•  Para poder usar una Prepared Statement real desde java, es necesario que tanto la base   de datos como el driver java que usemos soporten las PreparedStatement..
• MySQL sí soporta los Preparedstatement y los driver modernos de MySQL para java también lo soportan. Sin embargo, debemos habilitarlos en el momento de establecer la conexión.
•   Por razones de rendimiento, intentado minimizar llamadas innecesarias a Connection.prepareCall() rehusando instancias de CallableStatement.

CONCLUCIONES

Para poder usar una Prepared Statement real desde java, es necesario que tanto la base de datos como el driver java que usemos soporten las Prepared Statement. Independientemente de que lo soporten o no, nosotros podremos hacer el código java usando Prepared Statement, aunque si la base de datos o el driver no lo soportan, no obtendríamos la ventaja de la eficiencia.

APRECIACION DEL EQUIPO

Al realizar este trabajo se ha entendido acerca de cómo y cuándo usar  preparedstetment también se ha comprendido que para enviar sentencias sql. Una Prepared Statement es una sentencia SQL de base de datos precompilada. Al estar precompilada, su ejecución será más rápida que una SQL normal, por lo que es adecuada cuando vamos a ejecutar la misma sentencia SQL (con distintos valores) muchas veces.

GLOSARIO DE TERMINOS.

  Sentencias: son los elementos básicos en los que se divide el código en un lenguaje de programación. Al fin y al cabo, un programa no es más que un conjunto de sentencias que se ejecutan para realizar una cierta tarea.
Parámetros: es una variable utilizada para recibir valores de entrada en una rutina o subrutina. Dichos valores, que serán enviados desde la rutina invocante, son llamados argumentos.
Interfaz: es un 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.
Subclase: Los métodos y variables que posee un objeto definen la clase a la cual pertenece
Plantilla: Una plantilla agiliza el trabajo de reproducción o de muchas copias idénticas o casi idénticas (que no tiene que ser tan elaborado, sofisticado o personal).
Controlador JDBC: es un componente de software que permite a las aplicaciones escritas en Java interactuar con una base de datos.

BIBLIOGRAFIA.