Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] JTable con mysql

Estas en el tema de JTable con mysql en el foro de Java en Foros del Web. Buenas tengo la siguiente duda, tengo un TableModel propio y pues me funciona perfectamente, puedo cargar los datos uno por uno, pero tengo un problema ...
  #1 (permalink)  
Antiguo 02/11/2014, 09:51
 
Fecha de Ingreso: septiembre-2012
Mensajes: 33
Antigüedad: 11 años, 7 meses
Puntos: 1
JTable con mysql

Buenas tengo la siguiente duda, tengo un TableModel propio y pues me funciona perfectamente, puedo cargar los datos uno por uno, pero tengo un problema a la hora inicializar el tablemodel, al inicializarlo en el constructor envío una función que me saca columna por columna de mi base de datos, estos datos los voy pasando a mi Objeto de transferencia Cliente y una vez lleno los paso a la tablemodel con el método add(cliente), todo bien hasta ahí, pero cuando llega a la última columna pum todos los datos que llevaba se convierten en la última columna
Ejemplo:

Primera columna rs.next():
Rodrigo, [email protected], 32145

Seguda columna rs.next();
Carlos, [email protected], 12345

Resultado de la jTable:
Carlos, [email protected], 12345
Carlos, [email protected], 12345


Función de la consulta:
Código:
while(rs.next()) {
                
                 cli.setNombresUlCliente(rs.getString("nombres"));
                 cli.setApellidosUlCliente(rs.getString("apellidos"));
                 cli.setCorreoUlCliente(rs.getString("correo"));
                 cli.setCelularUlCliente(rs.getString("celular"));
                 cli.setPaisUlCliente(rs.getString("pais"));
                 cli.setCiudadUlCliente(rs.getString("ciudad"));
                 ctm.getClientes().add(cli);
                 ctm.fireTableDataChanged();
                 
     
            }
  #2 (permalink)  
Antiguo 02/11/2014, 10:19
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: JTable con mysql

Buenas,

Cada vez que haces una add del Cliente, le estás pasando la misma referencia al mismo objeto.

Debes crear un objeto cliente en cada vuelta del bucle porque si no lo estás reescribiendo una y otra vez...

Suponiendo que la clase se llame "Cliente":

Código Java:
Ver original
  1. while(rs.next()) {
  2.                  Cliente cli = new Cliente();
  3.  
  4.                  cli.setNombresUlCliente(rs.getString("nombres"));
  5.                  cli.setApellidosUlCliente(rs.getString("apellidos"));
  6.                  cli.setCorreoUlCliente(rs.getString("correo"));
  7.                  cli.setCelularUlCliente(rs.getString("celular"));
  8.                  cli.setPaisUlCliente(rs.getString("pais"));
  9.                  cli.setCiudadUlCliente(rs.getString("ciudad"));
  10.                  ctm.getClientes().add(cli);
  11.                  ctm.fireTableDataChanged();                
  12.      
  13.             }

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 02/11/2014, 10:44
 
Fecha de Ingreso: septiembre-2012
Mensajes: 33
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: JTable con mysql

Listo, gracias por tu respuesta pero sigo sin solventar mi problema, estoy seguro de que es como tu dices, porque anteriormente lo tenía así, sólo que creo que el problema ahora recae en el TableModel

Mira tengo esto en el código, he provado de muchas formas pero sigue el mismo resultado:

Código:
public class Selects {
    
    public static int x;
    public ClientesTableModel ctm;
      
    public void cargarClientes(JTable tableclientes) throws SQLException{
    ResultSet rs;
        Conexion con = new Conexion();
        
      ctm = (ClientesTableModel) tableclientes.getModel();
       
         Statement sentencia = null;
            sentencia = con.conectarBaseDatos().createStatement();
            String consulta = "SELECT nombres,apellidos,correo,celular,fijo,pais,ciudad FROM cliente";
            
             rs = sentencia.executeQuery(consulta);
             
                int i =0 ;
             while(rs.next()) {
                 
                 Cliente cli = new Cliente();
                 cli.setNombresUlCliente(rs.getString("nombres"));
                 cli.setApellidosUlCliente(rs.getString("apellidos"));
                 cli.setCorreoUlCliente(rs.getString("correo"));
                 cli.setCelularUlCliente(rs.getString("celular"));
                 cli.setPaisUlCliente(rs.getString("pais"));
                 cli.setCiudadUlCliente(rs.getString("ciudad"));
                 ctm.getClientes().add(cli);
                
                 
                
                 
            }
             
           
             
            
        
    
    }
            
}
Y me sigue sacando los 2 iguales al momento de agregarlos

Sale:

Rodrigo Vergara
Rodrigo Vergara

Cuando debería ser
Carlos Estupiñan
Rodrigo Vergara


Si estoy seguro de que le problema está en el add, he probado haciendo system.out.println en cada rs.next() y me vota los valores que son, ósea el primero carlos y el segundo rodrigo, pero como que al agregar el último valor, todas las filas toman el mismo valor realmente no se porque :s

Última edición por Programadorpollo; 02/11/2014 a las 13:05

Etiquetas: jtable, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:00.