Ejemplo de base de datos y reports con jasper report

download Ejemplo de base de datos y reports con jasper report

of 15

  • date post

    24-Jan-2018
  • Category

    Food

  • view

    1.127
  • download

    0

Embed Size (px)

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

  1. 1. Ejemplo de base de datos y reports con jasper report Abrimos netbeans (esta es la versin 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.
  2. 2. En ese JFrame (que llamaremos Formulario1) colocamos un botn 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 informacin 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 generacin: 19-01-2016 a las 14:38:54 -- Versin del servidor: 10.0.17-MariaDB -- Versin 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` --
  3. 3. -- -------------------------------------------------------- -- -- 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`
  4. 4. 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 conexin llamamos en librera la misma que permite la conexin con mysql
  5. 5. Esta es la clase de conexcion
  6. 6. Y este su cdigo 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){
  7. 7. 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; } }
  8. 8. Como se observa, se tienen tres variables importantes, una de tipo Connection para conectar al servidor y la base de datos mediante la librera que se incorpor previamente (com.mysql.jdbc.Driver), una variable para la iclusin y modificacin 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 botn para incorporar informacin, a continuacin se configura el Formulario1 y se utiliza el botn para incorporar informacin y despus revisamos la base de datos a ver si funciona, si se observan los datos que estn en la tabla Hay 10 registros, el ltimo es KIKO. Al hacer en el diseador dobleclick sobre el botn se genera el siguiente evento de botn 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 mtodos, esto se hace antes del inicio de la class. Y se escribe
  9. 9. 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 botn, se incorpora el dato de forma directa ya que es una prueba y la finalidad es crear el reporte. En query se coloca la instruccin de insertar un registro. query="INSERT INTO alumnos VALUES (id,'24332670','zara',12,23,33)"; Hay un alerta en la lnea 63, esto es porque se declar una variable tipo Connection y esta no est incorporada al cdigo, se hace click en el cono para ver las opciones.
  10. 10. Se selecciona la opcin donde se importa la librera Connection, esto queda as. Y desaparece el alerta. En la class Main en el mtodo principal, instanciamos el formulario y lo hacemos visible para ejecutarlo. Formulario1 form1=new Formulario1();
  11. 11. form1.setVisible(true); quedando de esta forma Y se ejecuta. Como no se cre la interfaz grfica para ver los resultados se revisa la base de datos actualizada.
  12. 12. Despus 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 pgina oficial de netbeans en su versin mas actualizada.
  13. 13. Se descarga y se instala.