Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/09/2013, 01:07
dfmex
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 7 meses
Puntos: 3
Exclamación JTable No actualiza datos

Hola a todos!!!

Estoy haciendo un programa de proyecto para mi escuela, y necesito ayuda...

He usado JTable para que se representen en tablas de dos columnas unos datos que extraigo de una base de datos MySQL.

La cosa es: SI FUNCIONA, extrae correctamente los datos y los muestra en la tabla, PERO cuando agrego un dato nuevo a la base de datos y vuelvo a llamar a mi clase TablaVisualizarDatos sucede que no muestra las actualizaciones y tengo que cerrar el programa y volverlo a cargar para que se muestren los datos agregados a la base de datos mientras el programa estaba en ejecución.


¿Alguien por favor podría ayudarme a resolver este inconveniente?, la verdad ya no logro dar con una...


Código:
package calcularestadisticas;

import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.JScrollPane; 
import javax.swing.JFrame; 
import java.awt.*; 
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public class TablaVisualizarDatos extends JFrame { 
    
    public TablaVisualizarDatos() {
    super("Datos Capturados");
    }

    void VisualizarDatos() {
        


//Ajusto mi ventana al centro de la pantalla
this.setLocationRelativeTo(null);
//creamos el arreglo de objetos que contendra el 
//contenido de las columnas 
Object[] dato = new Object[2];

// creamos el modelo de Tabla 
DefaultTableModel dtm = new DefaultTableModel();

dtm.addColumn("Valor Ingresado");
dtm.addColumn("Cantidad de Veces");

try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/calculadoraestadistica","root","jrmiron85");
        //JOptionPane.showMessageDialog(null, "La conexion se ha realizado con exito");
        Statement estado = (Statement) con.createStatement();
        
        String Consultar = "SELECT ID, Valor, COUNT( * ) as repetidos FROM datos GROUP BY Valor HAVING COUNT( * ) > 0";
        //JOptionPane.showMessageDialog(null, Agregar);   
        
        ResultSet resultado = estado.executeQuery(Consultar);
        //JOptionPane.showMessageDialog(null, "El dato: "+Dato+" fue capturado exitosamente.");
        System.out.println("Consulta de valores a la Base de Datos exitosa.");
                    
        while(resultado.next()){
            
            dato[0] = resultado.getString("Valor");
            dato[1] = resultado.getString("repetidos");
            
            dtm.addRow(dato);
            
            
            } 
            
            
            }
        
        
        catch(SQLException ex){
            JOptionPane.showMessageDialog(null,"Error de mysql");
        }
        catch(ClassNotFoundException e){
        }
        catch(Exception e){
            JOptionPane.showMessageDialog(null, "Se ha encontrado un error que es: "+e.getMessage()+"");
        }  

// se crea la Tabla con el modelo DefaultTableModel 
final JTable table = new JTable(dtm);

//se define el tamaño 
table.setPreferredScrollableViewportSize(new Dimension(250, 300));

//Creamos un JscrollPane y le agregamos la JTable 
JScrollPane scrollPane = new JScrollPane(table);

//Agregamos el JScrollPane al contenedor 
getContentPane().add(scrollPane, BorderLayout.CENTER);

//manejamos la salida 
addWindowListener(new WindowAdapter() { 
    
}); 

    this.pack();
    this.setVisible(true);
    }

}