Documente Academic
Documente Profesional
Documente Cultură
Un objeto PreparedStatementse crea desde una sentencia SQL que se enva a labase de datos y se precompila antes de enviar cualquier dato. Podemos llamar alas sentencias setXXXapropiadas sobre el objeto PreparedStatementparaenviar datos. Manteniendo los objetos reparedStatementy Connectioncomovariables de ejemplar privadas reducimos la sobrecarga porque las sentencias SQLno tienen que compilarse cada vez que se envan.Las instrucciones SQLy los parmetros son enviados a la base de datos cuando se llama al mtodoexecuteXXX.
Administraremos la base de datos cedecom y en este caso la tabla docentesque se ve en la fig
Listo. En proyecto en netbeans creamos el archivo de conexin.java Import java.sql.*; Import javax.swing.JOptionPane; public class conexion { public String db = "cedecom"; public String user = "root"; public String pass = ""; public String url = "jdbc:mysql://localhost/"+db; String driver = "com.mysql.jdbc.Driver"; publicconexion() { } public Connection Conectar() { Connection link = null; try { Class.forName(driver); link = DriverManager.getConnection(this.url, this.user, this.pass); } catch (Exception e) { JOptionPane.showMessageDialog(null, e); } return link; } }
1 Daro Vergara
El siguiente paso es probar si nuestra conexin est bien, para ello creamos un objeto conexin y que muestre un mensaje si todo est bien. Agregando el siguiente cdigo a nuestro archivo conexin os es posible verificar si esta es exitosa o no. publicstaticvoidmain(String[] args) { conexionmysql = new conexion(); Connectioncn = mysql.Conectar(); if (cn != null){ try { System.out.println("LA CONECCION CON LA BD ESTA BIEN! "); cn.close(); // cerramos la conexion } catch (SQLException ex) { Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex); } } } Quedando nuestro archivo conexion.java listo Import java.sql.*; Import java.io.*; Import java.util.logging.Level; Import java.util.logging.Logger; Import javax.swing.JOptionPane; public class conexion { public String db = "cedecom"; public String user = "root"; public String pass = ""; public String url = "jdbc:mysql://localhost/"+db; String driver = "com.mysql.jdbc.Driver"; publicconexion(){ } public Connection Conectar() { 2 Daro Vergara
Connection link = null; try { Class.forName(driver); link = DriverManager.getConnection(this.url, this.user, this.pass); } catch (Exception e) { JOptionPane.showMessageDialog(null, e); } return link; } public static void main(String[] args) { conexionmysql = new conexion(); Connection cn = mysql.Conectar(); if (cn != null){ try { System.out.println("LA CONECCION CON LA BD ESTA BIEN! "); cn.close(); // cerramos la conexion } catch (SQLException ex) { Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex); } } } } Al correr nuestra aplicacin debemos obtener
Si el resultado obtenido fue el anterior, pasamos al siguiente paso que es crear el formulario (JFrameForm), recuerda clic derecho sobre el paquete
3 Daro Vergara
Creamos los botones, campos de textos, la tabla , etiquetas y paneles , luego cambiamos el nombre de las variables, recuerda clic derechoChange Variable Name
A los campos de textos le colocamostxt, a los botones btny a la tablatblseguido del nombre del campo botn etc Y hacemos los cambios respectivos como lo muestra la figura
frmdocentes2.java
4 Daro Vergara
Insercin del cdigo en nuestro formulario (frmdocentes2.java) Al dar clic e Source se llega a la vista de cdigo, donde podemos anexar el cdigo correspondiente a cada botn)
1. En la cabecera y primera lnea de cdigo dentro de la clase frmdocentes2.java Import cedecom.conexion.conexion; Import java.sql.*; Import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import javax.swing.*; import javax.swing.table.*; import java.lang.String.*; import java.sql.PreparedStatement; public class frmdocentes2 extends javax.swing.JFrame { DefaultTableModel dtm=new DefaultTableModel();
2. En el constructor public frmdocentes2() { initComponents(); Stringtitulos[]={"Cdula","Nombres","Apellidos","Telfono","E-mail","Especialidad","Perfil"}; dtm.setColumnIdentifiers(titulos); tblDocentes.setModel(dtm); setSize(530,230); setLocation(200,200); } 3. Funciones Las funciones que necesitaremos para activar botones, habilitar o inhabilitar campos de textos voidhabilitar() { txtCedula.setEnabled(true); txtNombres.setEnabled(true); txtApellidos.setEnabled(true); txtTelefono.setEnabled(true); txtEmail.setEnabled(true); txtEspecialidad.setEnabled(true); txtPerfil.setEnabled(true); txtCedula.requestFocus(); } 5 Daro Vergara
voidinhabilitar() { txtNombres.setEnabled(false); txtApellidos.setEnabled(false); txtTelefono.setEnabled(false); txtEmail.setEnabled(false); txtEspecialidad.setEnabled(false); txtPerfil.setEnabled(false); } public void limpiarObjetos(){ txtCedula.setText(""); txtNombres.setText(""); txtApellidos.setText(""); txtTelefono.setText(""); txtEmail.setText(""); txtEspecialidad.setText(""); txtPerfil.setText(""); } public void activaBotones(booleann,booleane,booleanm,boolean g){ btnNuevo.setEnabled(n); btnEliminar.setEnabled(e); btnModificar.setEnabled(m); btnGrabar.setEnabled(g); } 4. Programar los botones Para programar un botn, hacemos clic derecho sobre este EventsActionactionPerformed
private void btnCancelarActionPerformed(java.awt.event.ActionEventevt) { inhabilitar(); int resp; resp=JOptionPane.showConfirmDialog(null,"Deseas Cancelar el proceso? ","pregunta",0); if(resp==0){ limpiarObjetos(); txtCedula.setEnabled(true); activaBotones(true,false,false,false); } } 6 Daro Vergara
private void btnBuscarActionPerformed(java.awt.event.ActionEventevt) { String b; String sentencia =""; conexionmysql = new conexion(); Connection cn = mysql.Conectar(); sentencia= "SELECT * FROM docentes"; if(btnNuevo.isEnabled()){ try{ PreparedStatementpst=cn.prepareStatement(sentencia); ResultSetrs = pst.executeQuery(sentencia); b=txtCedula.getText(); booleanencuentra=false; while(rs.next()){ if(b.equals(rs.getString(1))){ txtNombres.setText((String)rs.getString(2)); txtApellidos.setText((String)rs.getString(3)); txtTelefono.setText((String)rs.getString(4)); txtEmail.setText((String)rs.getString(5)); txtEspecialidad.setText((String)rs.getString(6)); txtPerfil.setText((String)rs.getString(7)); this.activaBotones(true, true, true, false); encuentra=true; break; } } if(encuentra==false){ limpiarObjetos(); txtCedula.setText("No existe"); txtCedula.requestFocus(); } } catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } } } 7 Daro Vergara
private void btnModificarActionPerformed(java.awt.event.ActionEventevt) { intresp; resp=JOptionPane.showConfirmDialog(null,"Deseas Modificar los datos? ","pregunta",0); if(resp==0){ if(Integer.parseInt(txtCedula.getText())>0) { conexionmysql = new conexion(); Connection cn = mysql.Conectar(); String nom,apell,Email,Especialidad,Perfil; longident,tel; ident=Long.parseLong(txtCedula.getText()); nom=txtNombres.getText(); apell=txtApellidos.getText(); tel=Long.parseLong(txtTelefono.getText()); Especialidad=txtEspecialidad.getText(); Perfil=txtPerfil.getText(); Email=txtEmail.getText(); String actualizar=""; actualizar="UPDATE docentes SET nombres=?,apellidos=?,telefono=?,email=?,especialidad=?,perfil=?WHERE iddocente= ?"; try{ PreparedStatementpst=cn.prepareStatement(actualizar); pst.setString(1, nom); pst.setString(2, apell); pst.setLong(3,tel); pst.setString(4, Email); pst.setString(5,Especialidad); pst.setString(6, Perfil); pst.setLong(7, Long.valueOf(ident));//es el ltimoparmetro en llenar intretorno=pst.executeUpdate(); pst.close(); cn.close(); if(retorno>0){ JOptionPane.showMessageDialog(null,"Actualizacin ejecutada correctamente"); } else{ JOptionPane.showMessageDialog(null," Error "); } activaBotones(true,false,false,false); limpiarObjetos(); } catch(SQLException e){ JOptionPane.showMessageDialog(null," Error "+e.toString()); } }else{ }} } 8 Daro Vergara
private void btnGrabarActionPerformed(java.awt.event.ActionEventevt) { intresp; resp=JOptionPane.showConfirmDialog(null," Desea grabar el registro ?"," pregunta",0); if(resp==0){ conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String nomb,apell,email,espec,perf; Long ident,tel; String sentenciaSql=""; ident=Long.parseLong(txtCedula.getText()); nomb=txtNombres.getText(); apell=txtApellidos.getText(); tel=Long.parseLong(txtTelefono.getText()); email=txtEmail.getText(); espec=txtEspecialidad.getText(); perf=txtPerfil.getText(); String mensaje=""; sentenciaSql="INSERT INTO docentes(iddocente,nombres,apellidos,telefono,email,especialidad,perfil)" + " VALUES(?,?,?,?,?,?,?) "; mensaje="Todo bien"; String mensaje2="La Cedula y telefono so nmericos"; try { PreparedStatementpst=cn.prepareStatement(sentenciaSql); pst.setLong(1, ident); pst.setString(2, nomb); pst.setString(3, apell); pst.setLong(4, tel); pst.setString(5, email); pst.setString(6,espec); pst.setString(7, perf); int n=pst.executeUpdate(); pst.close(); cn.close(); if(n>0){ JOptionPane.showMessageDialog(null, mensaje); } else{ JOptionPane.showMessageDialog(null, mensaje2); } } catch (SQLException ex) { JOptionPane.showMessageDialog(null, ex); } } }
9 Daro Vergara
private void btnEliminarActionPerformed(java.awt.event.ActionEventevt) { intresp; intident; String comando; comando="DELETE FROM docentes"+" WHERE iddocente=?"; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); ident=Integer.parseInt(txtCedula.getText()); resp=JOptionPane.showConfirmDialog(null,"Deseas eliminar el registro? ","pregunta",0); if(resp==0){ try{ PreparedStatementpst=cn.prepareStatement(comando); pst.setInt(1, ident); int n=pst.executeUpdate(); pst.close(); cn.close(); if(n>0){ JOptionPane.showMessageDialog(null, "Docenteborrado"); } activaBotones(true,false,false,false); limpiarObjetos(); } catch(SQLException e){ JOptionPane.showMessageDialog(null," Error "+e.toString()); } } }
10 Daro Vergara
private void btnVerActionPerformed(java.awt.event.ActionEventevt) { String sentenciasql =""; Conexion mysql = new conexion(); Connection cn = mysql.Conectar(); sentenciasql= "SELECT * FROM docentes"; try{ this.setSize(530,500); intf,i; PreparedStatementpst = cn.prepareStatement(sentenciasql); ResultSetrs = pst.executeQuery(sentenciasql); String datos[]=new String[7]; f=dtm.getRowCount(); if(f>0) for(i=0;i<f;i++) dtm.removeRow(0); while(rs.next()){ datos[0]=(String)rs.getString(1); datos[1]=(String)rs.getString(2); datos[2]=(String)rs.getString(3); datos[3]=(String)rs.getString(4); datos[4]=(String)rs.getString(5); datos[5]=(String)rs.getString(6); datos[6]=(String)rs.getString(7); dtm.addRow(datos); } } catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } }
11 Daro Vergara
private void btnbuscarvariosActionPerformed(java.awt.event.ActionEventevt) { conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String sentencia=""; longced; /* si queremos buscar por nombres String nombre; nombre=txtNombres.getText();*/ ced=Long.parseLong(txtCedula.getText()); sentencia= "SELECT * FROM docentes WHERE iddocente LIKE CONCAT('%', ? ,'%')"; try{ this.setSize(530,500); intf,i; PreparedStatementpst = cn.prepareStatement(sentencia); // pst.setString(1,nombre); pst.setLong(1,ced); ResultSetrs = pst.executeQuery(); String datos[]=new String[7]; f=dtm.getRowCount(); if(f>0) for(i=0;i<f;i++) dtm.removeRow(0); while(rs.next()){ datos[0]=(String)rs.getString(1); datos[1]=(String)rs.getString(2); datos[2]=(String)rs.getString(3); datos[3]=(String)rs.getString(4); datos[4]=(String)rs.getString(5); datos[5]=(String)rs.getString(6); datos[6]=(String)rs.getString(7); dtm.addRow(datos); } } catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } }
12 Daro Vergara
private void txtCedulaActionPerformed(java.awt.event.ActionEventevt) { txtCedula.transferFocus(); // TODO add your handling code here: }
private void txtNombresActionPerformed(java.awt.event.ActionEventevt) { txtNombres.transferFocus(); // TODO add your handling code here: }
private void txtApellidosActionPerformed(java.awt.event.ActionEventevt) { txtApellidos.transferFocus(); // TODO add your handling code here: }
private void txtTelefonoActionPerformed(java.awt.event.ActionEventevt) { txtTelefono.transferFocus(); // TODO add your handling code here: }
private void txtEmailActionPerformed(java.awt.event.ActionEventevt) { txtEmail.transferFocus(); // TODO add your handling code here: }
private void txtEspecialidadActionPerformed(java.awt.event.ActionEventevt) { txtEspecialidad.transferFocus(); // TODO add your handling code here: }
private void txtPerfilActionPerformed(java.awt.event.ActionEventevt) { txtEspecialidad.transferFocus(); // TODO add your handling code here: } 13 Daro Vergara
Long tel; tel=Long.parseLong(txtTelefono.getText()); String nomb; nomb=txtNombres.getText(); int cod; cod=Integer.parseInt(txtCedula.getText()); Double k; k=Double.parseDouble(txtCedula.getText());
14 Daro Vergara
Es decir para llenar esta tabla debemos tomar los datos que estn guardados en las tablas donde la clave es primaria.
15 Daro Vergara
Para tomar esos datos, primero los tomar de la tabla donde estos son clave primaria y los leer a travs de un combobox, esta vez crear un formulario interno para luego mostrarlo en un formulario que he tomado como principal.
16 Daro Vergara
Ahora vamos a mostrar la informacin en el primer combo, para ello agregamos a la clase principal 1. En la cabecera y primera lnea de cdigo dentro de la clase frmVentas el siguiente cdigo (private javax.swing.DefaultComboBoxModel modelocboproducto;) Quedando asi: import conexion.conexion; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import javax.swing.*; import javax.swing.table.*; import java.lang.String.*; import java.sql.PreparedStatement; public class frmVentas extends javax.swing.JInternalFrame { private javax.swing.DefaultComboBoxModel modelocboproducto;
2. En el constructor public frmVentas() { modelocboproducto = new javax.swing.DefaultComboBoxModel(new String[] {}); inicbocboproducto (); initComponents(); }
17 Daro Vergara
3. Las funciones private void inicbocboproducto () { String sentencia=""; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); sentencia= " SELECT codp FROM productos ORDER BY codp "; try { PreparedStatement pst=cn.prepareStatement(sentencia); ResultSet rs = pst.executeQuery(sentencia); modelocboproducto.addElement("codigo"); //Llenamos con datos el JComboBox while(rs.next()) modelocboproducto.addElement(rs.getString("codp")); } catch (Exception e) { } } Para asociar al combo con modelocboproducto debemos hacer lo siguiente: Clic derecho sobre el combo y escogemos propiedades
18 Daro Vergara
19 Daro Vergara
Para probar si el combo est bien, vinculamos este formulario al formulario principal y en un men de esta agregamos el siguiente cdigo Bueno, la ventana principal que tengo es esta.
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) { frmVentas h1 = new frmVentas(); jDesktopPane1.add(h1); h1.show(); } Recuerde que el nombre del formulario que tiene el combo es frmVentas Ejecutamos el formulario principal y al escoger ventas
De forma similar hacemos con los dos siguientes combos 20 Daro Vergara
Luego de ver los registro en cada combo, el paso que sigue es hacer la insercin con los datos recibidos. Cambiamos el nombre de varia bles de cada combo, para facilitar el reconocimiento
21 Daro Vergara
private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) { int resp; resp=JOptionPane.showConfirmDialog(null," Desea grabar el registro ?"," pregunta",0); if(resp==0){ conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String producto,cajero,maquina; String sentenciaSql=""; producto=cboproducto.getSelectedItem().toString(); cajero=cbocajero.getSelectedItem().toString(); maquina=cbomaquina.getSelectedItem().toString(); String mensaje=""; sentenciaSql="INSERT INTO venta(codp,codc,codm)" + " VALUES(?,?,?) "; mensaje="Todo bien"; try { PreparedStatement pst=cn.prepareStatement(sentenciaSql); pst.setString(1, producto); pst.setString(2, cajero); pst.setString(3, maquina); int n=pst.executeUpdate(); pst.close(); cn.close(); if(n>0){ JOptionPane.showMessageDialog(null, mensaje); } else{ JOptionPane.showMessageDialog(null,"Error"); } } catch (SQLException ex) { JOptionPane.showMessageDialog(null, ex); } } }
22 Daro Vergara
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { int resp; String producto,cajero,maquina; String comando; comando="DELETE FROM venta"+" WHERE codp=? AND codc=? AND codm=? "; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); producto=cboproducto.getSelectedItem().toString(); cajero=cbocajero.getSelectedItem().toString(); maquina=cbomaquina.getSelectedItem().toString(); resp=JOptionPane.showConfirmDialog(null,"Deseas eliminar el registro? ","pregunta",0); if(resp==0){ try{ PreparedStatement pst=cn.prepareStatement(comando); pst.setString(1, producto); pst.setString(2, cajero); pst.setString(3, maquina); int n=pst.executeUpdate(); pst.close(); cn.close(); if(n>0){ JOptionPane.showMessageDialog(null, "Lista de llamadas borrada"); } activaBotones(true,false,false,false); } catch(SQLException e){ JOptionPane.showMessageDialog(null," Error "+e.toString()); } } }
23 Daro Vergara
private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) { int resp; resp=JOptionPane.showConfirmDialog(null,"Deseas Modificar los datos? ","pregunta",0); if(resp==0){ conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String producto,cajero,maquina; producto=cboproducto.getSelectedItem().toString(); cajero=cbocajero.getSelectedItem().toString(); maquina=cbomaquina.getSelectedItem().toString(); String actualizar=""; actualizar="UPDATE venta SET codc=?,codm=? WHERE codp= ?"; try{ PreparedStatement pst=cn.prepareStatement(actualizar); pst.setString(1, cajero); pst.setString(2, maquina); pst.setString(3, producto); int retorno=pst.executeUpdate(); pst.close(); cn.close(); if(retorno>0){ JOptionPane.showMessageDialog(null,"Actualizacin ejecutada correctamente"); } else{ JOptionPane.showMessageDialog(null," Error "); } activaBotones(true,false,false,false); } catch(SQLException e){ JOptionPane.showMessageDialog(null," Error "+e.toString()); } } }
24 Daro Vergara
private void verActionPerformed(java.awt.event.ActionEvent evt) { String sentenciasql =""; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); sentenciasql= "SELECT * FROM venta"; try{ this.setSize(600,750); int f,i; PreparedStatement pst = cn.prepareStatement(sentenciasql); ResultSet rs = pst.executeQuery(sentenciasql); String datos[]=new String[3]; f=dtm.getRowCount(); if(f>0) for(i=0;i<f;i++) dtm.removeRow(0); while(rs.next()){ datos[0]=(String)rs.getString(1); datos[1]=(String)rs.getString(2); datos[2]=(String)rs.getString(3); dtm.addRow(datos); }} catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } } Nota: Recuerda agregar a a la clase principal public class frmVentas extends javax.swing.JInternalFrame { DefaultTableModel dtm=new DefaultTableModel(); Y al constructor String titulos[]={"Producto","Cajero","Maquina"}; dtm.setColumnIdentifiers(titulos); tblventas.setModel(dtm); setSize(530,230); setLocation(200,200);
25 Daro Vergara
1. Mostrar el nmero de ventas de cada producto, ordenado de ms a menos ventas. La sentencia sql para esa consulta es: SELECT productos.codp, productos.nombre, COUNT(venta.codp) FROM productos LEFT JOIN venta ON productos.codp = venta.codp GROUP BY codp, nombre ORDER BY COUNT(venta.codp) DESC Ahora creamos el formulario interno Recuerde.
Lo llamas ventasporproductos Como solo es consulta, lo que debemos hacer es colocarle una tabla y tres botones y un campo de texto.
26 Daro Vergara
********Los paquetes importado********** package almacen; import conexion.conexion; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import javax.swing.*; import javax.swing.table.*; import java.lang.String.*; import java.sql.PreparedStatement;
27 Daro Vergara
***********en la clase principal ************** public class ventasporproductos extends javax.swing.JInternalFrame { DefaultTableModel dtm=new DefaultTableModel(); **********En el constructor************** public ventasporproductos() { initComponents(); String titulos[]={"Cdigo","Nombres","Cantidad Vendida"}; dtm.setColumnIdentifiers(titulos); tblvetas.setModel(dtm); setSize(530,280); setLocation(200,200); }
private void btnmostrartodoActionPerformed(java.awt.event.ActionEvent evt) { String sentenciasql =""; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); sentenciasql= "SELECT productos.codp, productos.nombre, COUNT(venta.codp) " + "FROM productos LEFT JOIN venta ON productos.codp = venta.codp " + "GROUP BY codp, nombre ORDER BY COUNT(venta.codp) DESC"; try{ this.setSize(530,500); int f,i; PreparedStatement pst = cn.prepareStatement(sentenciasql); ResultSet rs = pst.executeQuery(sentenciasql); String datos[]=new String[3]; f=dtm.getRowCount(); if(f>0) for(i=0;i<f;i++) dtm.removeRow(0); while(rs.next()){ datos[0]=(String)rs.getString(1); datos[1]=(String)rs.getString(2); datos[2]=(String)rs.getString(3); dtm.addRow(datos); }} catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } }
28 Daro Vergara
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String sentencia=""; int ced; String nombre; ced=Integer.parseInt(txtcodigo.getText()); sentencia= "SELECT productos.codp, productos.nombre, COUNT(venta.codp)" + "FROM productos LEFT JOIN venta ON productos.codp = venta.codp " + "WHERE productos.codp LIKE CONCAT('%', ? ,'%')" + "GROUP BY codp, nombre ORDER BY COUNT(venta.codp) DESC "; try{ this.setSize(530,500); int f,i; PreparedStatement pst = cn.prepareStatement(sentencia); // pst.setString(1,nombre); pst.setInt(1,ced); ResultSet rs = pst.executeQuery(); String datos[]=new String[3]; f=dtm.getRowCount(); if(f>0) for(i=0;i<f;i++) dtm.removeRow(0); while(rs.next()){ datos[0]=(String)rs.getString(1); datos[1]=(String)rs.getString(2); datos[2]=(String)rs.getString(3); dtm.addRow(datos); } } catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } }
SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{INNER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC] [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]
29 Daro Vergara
E introducir el cdigo para programarlo Los paquetes necesarios package almacen; import conexion.conexion; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import javax.swing.*; import javax.swing.table.*; import java.lang.String.*; import java.sql.PreparedStatement; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; 30 Daro Vergara
private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) { int resp; resp=JOptionPane.showConfirmDialog(null," Desea grabar el registro ?"," pregunta",0); if(resp==0){ conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String nomb; int ident; FileInputStream fis = null; String sentenciaSql=""; nomb=txtNombres.getText(); ident=Integer.parseInt(txtidentificacion.getText()); File file = new File(txtImagen.getText()); try { fis = new FileInputStream(file); } catch (FileNotFoundException ex) { Logger.getLogger(insertaimagen.class.getName()).log(Level.SEVERE, null, ex); }
String mensaje=""; sentenciaSql="INSERT INTO fotos(id_foto,nombre,imagen)" + " VALUES(?,?,?) "; mensaje="Todo bien"; 31 Daro Vergara
try { PreparedStatement pst=cn.prepareStatement(sentenciaSql); pst.setInt(1, ident); pst.setString(2, nomb); pst.setBinaryStream(3, fis, (int) file.length()); int n=pst.executeUpdate(); pst.close(); cn.close(); if(n>0){ JOptionPane.showMessageDialog(null, mensaje); } else{ JOptionPane.showMessageDialog(null,"Error"); } } catch (SQLException ex) { JOptionPane.showMessageDialog(null, ex); } } }
32 Daro Vergara
La imagen la vamos a mostrar en el label, este label le asignamos un tamao, yo por ejemplo le di ancho y alto 280 px.
String id_foto=txtident.getText(); try{ PreparedStatement pst=cn.prepareStatement(sentenciaSql); pst.setString(1, id_foto); ResultSet res = pst.executeQuery(); while(res.next()) { Image i=null; Blob blob = res.getBlob("imagen"); if (blob != null) { i= javax.imageio.ImageIO.read(blob.getBinaryStream()); ImageIcon image = new ImageIcon(i); lbimagen.setIcon(image); if(image.getIconHeight() > 342 || image.getIconWidth() > 230){ ImageIcon imageScalada = new ImageIcon(image.getImage().getScaledInstance(280,280,Image.SCALE_DEFAULT)); lbimagen.setIcon(imageScalada); } else{ lbimagen.setIcon(image); } } break; } res.close(); pst.close(); cn.close(); }catch(Exception e) { JOptionPane.showMessageDialog(this,e.getMessage()); } }
34 Daro Vergara
Libreras
http://commons.apache.org/beanutils/ commons-beanutils http://commons.apache.org/collections/ commons-collections http://commons.apache.org/digester/ commons-digester
itext
35 Daro Vergara
El paso siguiente es abrir netbeans , nos dirigimos a la pestaa Tools o Herramientas si esta en ingle, como el caso que se muestra en pantalla, damos clic en plugins y se abre una ventanita como la mostrada.
Escogemos la occion Downloaded o descargado segn el caso, luego en adicionar el plugins y lo buscamos
36 Daro Vergara
37 Daro Vergara
Lo llame reportesalmacen
38 Daro Vergara
En la banda Detail agrregaremos los campos de nuestra tabla. Para ello debemos tener seleccionada la base de datos
Damos clic en el icono que se abre una ventana donde debemos agregar la base de datos , usuario y contrasea, luego uardamos
39 Daro Vergara
Al dar clic en Edit Query se abre una ventana donde hacemos la consulta.
40 Daro Vergara
Al desplegar el nodo fields podemos ver los campos de la tabla ahora solo basta con arrastrarlos y ubicarlos e la banda Details
41 Daro Vergara
Luego aadimos la fecha, para ello agregamos un campo text field y sobre este hacemos clic derecho
42 Daro Vergara
Agregando parmetros al reporte. En el inspector del reporte hacemos clic derecho sobre parameters y adicionamos el nuevo parametro
Lo renombramos
43 Daro Vergara
El parmetro debe ser del mismo tipo de datos de la variable o campo de datos de la tabla
SELECT * FROM
codc= $P{identificacion};
44 Daro Vergara
El otro parmetro que es el de un logo Guardamos la imagen logo en la carpeta donde tenemos los reportes
45 Daro Vergara
Y agregamos el siguiente cdigo package almacen; import conexion.conexion; import java.net.URL; import java.sql.*; import javax.swing.*; import java.util.HashMap; import java.util.Map; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.*; import net.sf.jasperreports.view.save.JRPdfSaveContributor.*; import net.sf.jasperreports.view.JRViewer.*; import net.sf.jasperreports.view.save.JRMultipleSheetsXlsSaveContributor.*; public class Reporte{ //direccion para la imagen private final String logotipo="/Reporte/logo.jpg"; public Reporte() { } public void ejecutarReporte(long identificacion){ 46 Daro Vergara
try{ conexion mysql = new conexion(); Connection cn = mysql.Conectar(); URL archivo=this.getClass().getResource("/Reporte/reportesalmacen.jasper"); System.out.println("Cargando desde: " + archivo); if(archivo == null){ System.out.println("No se encuentra el archivo."); System.exit(2); } JasperReport masterReport= null; try { masterReport= (JasperReport) JRLoader.loadObject(archivo); } catch (JRException e) { System.out.println("Error cargando el reporte maestro: " + e.getMessage()); System.exit(3); } Map parametro= new HashMap(); parametro.clear(); parametro.put("logo", this.getClass().getResourceAsStream(logotipo)); parametro.put("identificacion",identificacion); JasperPrint jasperPrint= JasperFillManager.fillReport(masterReport,parametro,cn); JasperViewer jviewer= new JasperViewer(jasperPrint,false); jviewer.setTitle("Reporte de Cajeros"); jviewer.setVisible(true); }catch (Exception j){ System.out.println("Mensaje de Error:"+j.getMessage()); } } public void cerrar(){ try { conexion mysql = new conexion(); Connection cn = mysql.Conectar(); cn.close(); } catch (SQLException ex) { ex.printStackTrace(); } } }
47 Daro Vergara
En este formulario debemos editar el botn generar package almacen; public class parametro extends javax.swing.JInternalFrame { private Reporte jasper; public parametro() { initComponents(); jasper=new Reporte(); } Programamos el botn generar
48 Daro Vergara