Ejemplo de base de datos y reports con jasper report
Embed Size (px)
Transcript of 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.

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`
--

-- --------------------------------------------------------
--
-- 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`

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

Esta es la clase de conexcion

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){

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;
}
}

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

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.

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

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.

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.



Se descarga y se instala.