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                  

}

22 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
  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. hola, alguien me puede ayudar como hacer un diccionario de lengua (español-tseltal) es que estoy haciendo pero no me ha quedado de boton editar y eliminar (no idiomas como ingles)

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

    ResponderEliminar
  10. 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
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. el boton de modificar no jala we

    ResponderEliminar
  13. 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
  14. 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
  15. Una pregunta alguien sabe como puedo implememntar el boton de Buscar?
    Les agradecería mucho que me pudieran ayudar

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

    ResponderEliminar
  17. pasa el codigo ya que no entiendo nada

    ResponderEliminar