Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2009, 17:47
Zidek
 
Fecha de Ingreso: junio-2009
Mensajes: 59
Antigüedad: 15 años, 7 meses
Puntos: 0
JTable no muestra datos de consulta

Hola, soy nuevo en el foro y praticamente en el mundo de la programación. Estoy haciendo una aplicación en java apoyada en mysql a través del IDE NetBeans6.5

El tema es que tengo una acción en la clase comercialelectrica.Cliente.java que me rellena un DefaultTableModel llamado tabla.

Esta tabla la paso desde el JDialog comercialelectrica.modulos.ListaClientes, y está compuesta de un JTable en la que se muestra el ID, DNI,Nombre y Apellidos de unos clientes que son extraidos de la BD mysql a través de una consulta en la que los obtenemos relacionandolos con sus identificadores, que se obtienen de un array que contiene dichos identificadores: Mucho lio no?

El problema es que a pesar de que sigo los pasos que se indican en algun comentario de este foro y otros en los que se instancia a DefaultTableModel, no consigo nada.

Pongo el codigo y lo comento.

ListaClientes.java:


package comercialelectrica.modulos;

import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
*
* @author Pablo
*/
public class ListaClientes extends javax.swing.JDialog {


public ListaClientes(java.awt.Dialog parent, boolean modal) {
super(parent, modal);
initComponents();
DefaultTableModel modelo = new DefaultTableModel();
this.jTable1 = new JTable(modelo);

List array = new ArrayList(BuscarCliente.getArray());/* Aquí recupero los identificadores que me pasan por array de un interfaz anterior*/

comercialelectrica.Cliente.RellenarTablaClientes(a rray, modelo);
this.jTable1.setModel(modelo);// Esto creo q no me esta haciendo nada


Como proviene de otro JDialog que me pasa un array con los identificadores de una serie de clientes, me han dicho que debo ponerlo seguidamente de initComponents(); para que se autorellene la interfaz con lo que quiera.


Ahora la funcion RellenarTablaClientes al que le pasamos el array con los identificadores y el DefaultTableModel:


public static void RellenarTablaClientes(List arrayid, DefaultTableModel tabla){

Connection con = null;

try {
con = DriverManager.getConnection(url, user, password);
con.setAutoCommit(false);
String sql = "SELECT CLIENTEID,DNI,NOMBRE,APELLIDOS FROM cliente WHERE CLIENTEID=?";
PreparedStatement pstm = con.prepareStatement(sql);
ResultSet rs = null;
int i = 0;

while(i<arrayid.size()){
pstm.setString(1, arrayid.get(i).toString());
rs = pstm.executeQuery();
if(rs.next()){
String[] datos = new String[4];

for(int j=0;j<4;j++){
datos[j] = rs.getString(j+1);
//System.out.println(datos[j]);
//Hasta aquí, OK, me escribiría los 4 campos de cada cliente
}

tabla.addRow(datos); //Esto no sé si hace algo o no porque en la clase Listaclientes.java no se pintan esos nombres,dni,... en la jTable

}

i++;
}
rs.close();
pstm.close();
con.commit();
}

catch (SQLException ex) {
ex.printStackTrace();
}


try {
if (con != null) {
con.rollback();
}
}

catch (SQLException ex2) {
ex2.printStackTrace();
}

finally{

try {
if (con != null) {
con.close();
}
}
catch (SQLException ex3) {
ex3.printStackTrace();
}

}



}



A ver si me dicen porque no se pintan el ID,DNI,Nombre, y Apellidos en el JDialog ListaClientes cuando llamo a la accion RellenarTablaClientes de la clase Cliente.java. Por cierto todo compila bien y no da errores.
Lo que tengo dudas es si se hace bien la llamada a RellenarTablaClientes, y si en esta la linea:
tabla.addRow(datos); se están añadiendo los datos.


Mucahs gracias de antemano

Última edición por Zidek; 03/06/2009 a las 07:42