Ejemplo de base de datos y reports con jasper report

15
Ejemplo de base de datos y reports con jasper report Abrimos netbeans (esta es la versión 8.1) Creamos un proyecto nuevo Creamos un JFrame en el empaquetado, si este no existe no hay problema ya que es solo un ejemplo demostrativo.

Transcript of Ejemplo de base de datos y reports con jasper report

Page 1: Ejemplo de base de datos y reports con jasper report

Ejemplo de base de datos y reports con jasper report

Abrimos netbeans (esta es la versión 8.1)

Creamos un proyecto nuevo

Creamos un JFrame en el empaquetado, si este no existe no hay problema ya que es solo un

ejemplo demostrativo.

Page 2: Ejemplo de base de datos y reports con jasper report

En ese JFrame (que llamaremos Formulario1) colocamos un botón llamado Reporte para enlazar al

reporte PDF en un visor.

Para que nos abra el visor con el reporte que vamos a incorporar, debemos ya tener creado una

clase de Conexcion a base de datos (ya existente) porque necesitamos extraer la información de

ella, aquí la base de datos sin normalizar la conforma una tabla llamada bd, la trabajamos en mysql

-- phpMyAdmin SQL Dump

-- version 4.5.0.2

-- http://www.phpmyadmin.net

--

-- Servidor: 127.0.0.1

-- Tiempo de generación: 19-01-2016 a las 14:38:54

-- Versión del servidor: 10.0.17-MariaDB

-- Versión de PHP: 5.5.30

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS

*/;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8mb4 */;

--

-- Base de datos: `bd`

--

Page 3: Ejemplo de base de datos y reports con jasper report

-- --------------------------------------------------------

--

-- Estructura de tabla para la tabla `alumnos`

--

CREATE TABLE `alumnos` (

`id` int(11) NOT NULL,

`cedula` varchar(20) NOT NULL,

`nombre` varchar(50) NOT NULL,

`nota1` float NOT NULL,

`nota2` float NOT NULL,

`nots3` float NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--

-- Volcado de datos para la tabla `alumnos`

--

INSERT INTO `alumnos` (`id`, `cedula`, `nombre`, `nota1`, `nota2`,

`nots3`) VALUES

(1, '111111', 'ana', 12, 18, 20),

(2, '2222', 'bernardo', 30, 30, 40),

(3, '3333', 'carlina', 2, 3, 4),

(4, '44444', 'daniel', 22, 21, 32),

(5, '6666', 'felicia', 11, 0, 0),

(6, '777', 'gerardo', 28, 29, 39),

(7, '8888', 'henan', 3, 7, 8),

(8, '999', 'irina', 7, 8, 9),

(9, '101010', 'julia', 3, 22, 21),

(10, '11 11 11', 'kiko', 7, 6, 4);

--

-- Õndices para tablas volcadas

--

--

-- Indices de la tabla `alumnos`

--

ALTER TABLE `alumnos`

ADD PRIMARY KEY (`id`),

ADD UNIQUE KEY `cedula` (`cedula`);

--

-- AUTO_INCREMENT de las tablas volcadas

--

--

-- AUTO_INCREMENT de la tabla `alumnos`

--

ALTER TABLE `alumnos`

Page 4: Ejemplo de base de datos y reports con jasper report

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Como ven, la tabla que se llamó alumnos ya tiene algunos registros, está en localhost, el usuario es

root y no tiene clave.

Para crear la clase de conexión llamamos en librería la misma que permite la conexión con mysql

Page 5: Ejemplo de base de datos y reports con jasper report

Esta es la clase de conexcion

Page 6: Ejemplo de base de datos y reports con jasper report

Y este su código

import java.awt.HeadlessException;

import java.sql.*;

import javax.swing.JOptionPane;

public class Conexcion {

public Connection con=null;

public Statement stat=null;

public ResultSet reg=null;

public Connection conectar(){

try{

Class.forName("com.mysql.jdbc.Driver");

con=DriverManager.getConnection("jdbc:mysql://localhost/bd","root","");

} catch(ClassNotFoundException | SQLException | HeadlessException e){

Page 7: Ejemplo de base de datos y reports con jasper report

JOptionPane.showMessageDialog(null,"No Conectado");

System.exit(0);

}

return con;

}

public void manejar(Connection con, String sql){

try {

stat=con.createStatement();

stat.executeUpdate(sql);

JOptionPane.showMessageDialog(null,"DATOS INCLUIDOS");

}catch(SQLException e){

JOptionPane.showMessageDialog(null,"DATOS NO INCLUIDOS");

}

}

public ResultSet leer(Connection con,String query) {

try{

stat=con.createStatement();

reg=stat.executeQuery(query);

} catch (SQLException e) {

}

return reg;

}

}

Page 8: Ejemplo de base de datos y reports con jasper report

Como se observa, se tienen tres variables importantes, una de tipo Connection para conectar al

servidor y la base de datos mediante la librería que se incorporó previamente

(com.mysql.jdbc.Driver), una variable para la iclusión y modificación de registros en alguna tabla

de la base de datos mediante instrucciones sql como: INSERT INTO ‘nombre’_tabla(campos de la

tabla) VALUES (datos a incorporar) entre otras que ya conocen, que es de tipo Statement y una de

tipo ResultSet para realizar consultas o querys con SELECT campos_de_tabla WHERE condiciones.

Para probar si se conecta a la base de datos, se puede utilizar el JFrame con el botón para

incorporar información, a continuación se configura el Formulario1 y se utiliza el botón para

incorporar información y después revisamos la base de datos a ver si funciona, si se observan los

datos que están en la tabla

Hay 10 registros, el último es KIKO.

Al hacer en el diseñador dobleclick sobre el botón se genera el siguiente evento de botón en el

source

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

}

Lo primero es verificar si la clase se encuentra en el mismo empaquetado, en caso que no sea así,

se debe importar la clase Conexcion e instanciarla para poder hacer uso de sus métodos, esto se

hace antes del inicio de la class. Y se escribe

Page 9: Ejemplo de base de datos y reports con jasper report

Import Nombre_Empaquetado_donde_se_encuentra_ Conexcion.Conexcion;

Solo si se encontrara en otro empaquetado.

Antes de los eventos se puede instanciar la class Conexcion

Conexcion conexcion=new Conexcion();

Connection c=conexcion.conectar();

String query;

Dentro del evento de botón, se incorpora el dato de forma directa ya que es una prueba y la

finalidad es crear el reporte. En query se coloca la instrucción de insertar un registro.

query="INSERT INTO alumnos VALUES (id,'24332670','zara',12,23,33)";

Hay un alerta en la línea 63, esto es porque se declaró una variable tipo Connection y esta no está

incorporada al código, se hace click en el ícono para ver las opciones.

Page 10: Ejemplo de base de datos y reports con jasper report

Se selecciona la opción donde se importa la librería Connection, esto queda así.

Y desaparece el alerta.

En la class Main en el método principal, instanciamos el formulario y lo hacemos visible para

ejecutarlo.

Formulario1 form1=new Formulario1();

Page 11: Ejemplo de base de datos y reports con jasper report

form1.setVisible(true);

quedando de esta forma

Y se ejecuta.

Como no se creó la interfaz gráfica para ver los resultados se revisa la base de datos actualizada.

Page 12: Ejemplo de base de datos y reports con jasper report

Después de ejecutado, con el JOpionPane da el mensaje de datos incluidos, posteriormente se

cierra el formulario

Se actualiza base de datos para verificar que el registro fue incorporado.

Y se observa que si se actualiza. Para generar el reporte se debe instalar un plugin de la página

oficial de netbeans en su versión mas actualizada.

Page 13: Ejemplo de base de datos y reports con jasper report
Page 14: Ejemplo de base de datos y reports con jasper report
Page 15: Ejemplo de base de datos y reports con jasper report

Se descarga y se instala.