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);
}
}