lunes, 27 de octubre de 2014

Agregar, eliminar, modificar y listar en JTable en Netbeans usando base de datos








Este ejemplo muestra como hacer una conexion a a base de datos y hacer consultas como eliminar, agregar, modificar y listar los datos de la base de datos, usando componentes graficos como botones,campos de texto , jtable y labels,  Para mostrar la informacion se usan resultset, etc.y muchas otras cosas Espero y les sea de utilidad para los que quieren aprender mas como yop 




 AQUI ABAJO LES DEJO EL CODIGO UTILIZADO PARA EL PROYECTO, sigan las instrucciones de los 2 videos. esta facil de entender
package dba;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;

public class Mysql {
private static String db="unalm";
private static String user="root";
private static String pass="aquitupassword";
private static String url="jdbc:mysql://localhost:3306/"+db;
private static Connection Conn;

public static Connection getConnection(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        Conn=DriverManager.getConnection(url, user, pass);

}catch(Exception e){
    JOptionPane.showMessageDialog(null,"Error"+e.getMessage());
}
    return Conn;
}


}

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

package form;

import javax.swing.table.DefaultTableModel;
import dba.Mysql;
import java.sql.*;
import javax.swing.JOptionPane;

public class Cliente extends javax.swing.JFrame {
DefaultTableModel model;
Connection Conn;
Statement sent;

public Cliente() {
        initComponents();
        Conn=Mysql.getConnection();
        Deshabilitar();
        Llenar();
    }
void Deshabilitar(){
    txtNombre.setEditable(false);

    txtDireccion.setEditable(false);
    txtCorreo.setEditable(false);
    txtTelefono.setEditable(false);
}
void Limpiar(){
    txtNombre.setText("");
    txtDireccion.setText("");
    txtCorreo.setText("");
    txtTelefono.setText("");
}
void Habilitar(){
    txtNombre.setEditable(true);
    txtCorreo.setEditable(true);
    txtDireccion.setEditable(true);
    txtTelefono.setEditable(true);
    txtNombre.requestFocus();
}
void Llenar(){
    try{
        Conn=Mysql.getConnection();
        String [] titulos ={"Id","Nombre","Direccion", "Telefono", "Correo"};
        String sql="select * from contactos";
        model=new DefaultTableModel(null, titulos);
        sent=Conn.createStatement();
        ResultSet rs=sent.executeQuery(sql);

        String fila []= new String [5];

        while(rs.next()){
            fila [0]=rs.getString("id");
            fila [1]=rs.getString("nombre");
            fila [2]=rs.getString("direccion");
            fila [3]=rs.getString("telefono");
            fila [4]=rs.getString("correo");

            model.addRow(fila);

        }
jTable1.setModel(model);
       
    }catch(Exception e){
e.printStackTrace();
    }
}

private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {                                           
try{
    int fila=jTable1.getSelectedRow();
    String sql="delete from contactos where id="+jTable1.getValueAt(fila,0);
    sent=Conn.createStatement();
    int n=sent.executeUpdate(sql);
    if(n>0){
        Llenar();
        JOptionPane.showMessageDialog(null, "datos eliminados");
        Limpiar();
    }
}catch(Exception e){
    JOptionPane.showMessageDialog(null, "error"+e.getMessage());
}
  }

  private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                          
try{
    String sql="insert into contactos ( direccion ,nombre, telefono, correo)" +
           "Values (?,?,?,?) ";
PreparedStatement ps=Conn.prepareCall(sql);
ps.setString(1, txtNombre.getText());
ps.setString(2, txtDireccion.getText());
ps.setString(3, txtTelefono.getText());
ps.setString(4, txtCorreo.getText());


int n=ps.executeUpdate();
if(n>0)
JOptionPane.showMessageDialog(null, "datos guardados");
}catch(Exception e){
    JOptionPane.showMessageDialog(null, "error"+ e.getMessage());
}
Llenar();
Limpiar();
    }                                          

    private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {                                        
Limpiar();
Habilitar();
        // TODO add your handling code here:
    }
  private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                    
 if(evt.getButton()==1){
   try{
       Habilitar();
        int fila=jTable1.getSelectedRow();
        String sql="select * from contactos where id="+jTable1.getValueAt(fila,0);
        sent=Conn.createStatement();
        ResultSet rs=sent.executeQuery(sql);
        rs.next();
        txtNombre.setText(rs.getString("nombre"));
        txtDireccion.setText(rs.getString("direccion"));
        txtTelefono.setText(rs.getString("telefono"));
        txtCorreo.setText(rs.getString("correo"));

}catch(Exception e){
    e.printStackTrace();
}
    }
    }        

private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {                                            
try{
    String sql="Update contactos set nombre=?, direccion=?, telefono=?, correo=?"+
            "where id=?";
    int fila=jTable1.getSelectedRow();
    String dao=(String)jTable1.getValueAt(fila,0);
    PreparedStatement ps=Conn.prepareCall(sql);
    ps.setString(1,txtNombre.getText());
    ps.setString(2,txtDireccion.getText());
    ps.setString(3,txtTelefono.getText());
    ps.setString(4,txtCorreo.getText());//valor de campos de texto a pasar a
    //BasedeDatos

   ps.setString(5,dao);//la llamada sql se muestra en la tabla

    int n=ps.executeUpdate();
    if(n>0){
        Limpiar();
        Llenar();
        JOptionPane.showMessageDialog(null, "datos modificados");
       
    }
}catch (Exception e){
    JOptionPane.showMessageDialog(null, "error"+ e.getMessage());
}
        // TODO add your handling code here:
    }             

private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {                                         
System.exit(0);
        // TODO add your handling code here:
    }

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Cliente().setVisible(true);
            }
        });
    }
   private javax.swing.JButton btnCerrar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JButton btnModificar;
    private javax.swing.JButton btnNuevo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField txtCorreo;
    private javax.swing.JTextField txtDireccion;
    private javax.swing.JTextField txtNombre;
    private javax.swing.JTextField txtTelefono;
    // End of variables declaration                  

}

28 comentarios:

  1. Me salvaste en muchas inquietudes que tenía, aunque aún tengo algunas más por ejemplo cuando invocás el método guardar llamas esta sentencia PreparedStatement ps = Conn.prepareCall(sql); la cual no reconozco cual es la función y no me deja compilar.
    Si pudieras resolverme esta duda te agradecería.
    Saludos!

    ResponderEliminar
  2. estaria bueno que fueras explicando lo que haces en el video. ;)

    ResponderEliminar
  3. estoy haciendo lo mismo pero quiero que al seleccionar los datos de la tabala y le de click en el boton editar se abra otra ventana y los pueda cambiar , despues dar click en el boton gurdar y aparescan en la tabla nuevamente pero editados

    ResponderEliminar
    Respuestas
    1. Ya lograste hacerlo yo quiero hacer lo mismo me podrías ayudar

      Eliminar
    2. Ya lograste hacerlo yo quiero hacer lo mismo me podrías ayudar

      Eliminar
    3. El código lo puedes copiar esta arriba del vídeo

      Eliminar
  4. buena presentacion me sirvio de mucho :) te felicito eres un gran programador...

    ResponderEliminar
  5. buena presentacion me sirvio de mucho :) te felicito eres un gran programador...

    ResponderEliminar
  6. hola tengo un problema, la funcion de eliminar registro no me funciona me aparece errorjava.lang.NullPointerException, he revisado el codigo y nose donde esta el error

    ResponderEliminar
  7. pudiera ser que sea otra version de netbeans vez que hay bastantes ya

    ResponderEliminar
  8. y la base de datos ??? pasala!

    ResponderEliminar
  9. bueno a qui les dejo otro ejemplo mas sencillo de uso de base de datos en netbeans, espero y compartan codigos o links para aprender a programar

    https://programacionparajava.blogspot.mx/2014/08/crear-un-programa-en-java-que-guarde.html

    ResponderEliminar
  10. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  11. el boton de modificar no jala we

    ResponderEliminar
  12. ola....weee..estoy es muy interesante...pero yo deseo una aplicacion
    donde se utilize ventanas para asi modificar, eliminar, consultar y guardar datos pero que estos datos esten guardados en archivos xml...te lo agradeceria mucho.....gracias.....

    ResponderEliminar
  13. brother, me sale este error y no encuentro como solucionarlo
    :c
    the last packet sent successfully to the server was 0 milliseconds ago. The Driver has not received any packets from the server

    ResponderEliminar
  14. Una pregunta alguien sabe como puedo implememntar el boton de Buscar?
    Les agradecería mucho que me pudieran ayudar

    ResponderEliminar
  15. Me dan muchos errores. el GetConnection no me aparece no sé porqué

    ResponderEliminar
  16. pasa el codigo ya que no entiendo nada

    ResponderEliminar
    Respuestas
    1. El código esta arriba del vídeo, copialo y pegalo ha

      Eliminar
  17. muy buen blog amigo, pero seria de mucha ayuda si subieras el proyecto en un .rar para descargar desde mega o mediafire gracias..

    ResponderEliminar
    Respuestas
    1. Bueno, el código esta arriba del vídeo solo es cuestión de copiar y pegar

      Eliminar
  18. parcero esta muy bueno pero no deja descargar el archivo

    ResponderEliminar
    Respuestas
    1. Esfuérzate y copia y pega el coligo esta arriba del video

      Eliminar
  19. hola podrian ayudarme en el video segui todo y lo adapte a mi sistema pero no puedo utilizar el boton modificar este es el codigo de mi boton



    JButton btnModificar = new JButton("Modificar");//CREANDO UN BOTON LLAMADO MODIFICAR
    btnModificar.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    //Programar boton Modificar
    Connection con = null;



    try {
    con = getConnection();
    //LA VARIABLE PS SERA IGUAL A LA VARIABLE CONEXION ACTUALIZANDO DE LA BASE DE DATOS DONDE EL IDE SEA EL QUE VAMOS A IMGRESAR
    ps = (PreparedStatement) con.prepareStatement("UPDATE todos_los_productos SET Descripcion=?, Precio=?, Piezas=?, Stock=?");



    ps.setInt(1 , Integer.parseInt(txtIDE.getText()));
    ps.setString(2 , txtDescripcion.getText());
    ps.setInt(3 , Integer.parseInt(txtPiezas.getText() ));
    ps.setInt(4 , Integer.parseInt(txtPrecio.getText() ));
    ps.setInt(5 , Integer.parseInt(txtStock.getText() ));


    int res = ps.executeUpdate();

    if (res <= 5){
    JOptionPane.showMessageDialog(null, "Producto Modificado");
    LimpiarCajas();
    }//cierra if
    else {
    JOptionPane.showMessageDialog(null, "Error: Producto NO Modificado");
    LimpiarCajas();
    }// cuerra else
    con.close();
    } // cierra TRY
    catch (Exception e2) {
    System.err.println(e2);
    }// cierra catch

    }
    });

    ResponderEliminar