Text Resizer Text Resizer
February 7th, 2012
You're browsing: Scriptmatico.Com » JAVA » Mostrar un ResultSet en un JTable en Java

Mostrar un ResultSet en un JTable en Java

Posted on abr 18 in JAVAby PrintText Resizer Text Resizer

Hace unos dias me encontre con un ligero problema en java que consistia basicamente en mostrar el resultado de una consulta en un JTable y la verdad que es bastante sencillo y para los que an trabajado con Visual Basic esto se les hara muy familiar ya que es casi como manipular Un ListView que utuliza Visual Basic.

El Codigo es bastante sencillo:

JAVA:
  1. //Primero se obtiene la conexión a la base de datos con un código como este:
  2. DriverManager.registerDriver(new com.mysql.jdbc.Driver());
  3. Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba","usuario","clave");
  4.  
  5. //El siguiente paso es realizar la consulta y obtener el ResultSet. El código es el siguiente
  6. Statement s = conexion.createStatement();
  7. ResultSet rs = s.executeQuery("select * from tablaprueba");
  8.  
  9. //Para meter los datos en el JTable, usaremos la clase DefaultTableModel. Para ello basta con instanciar el JTable como se muestra en el codigo
  10. JTable tabla = new JTable(modelo);
  11.  
  12. //Ahora sólo hay que rellenar el DefaultTableModel con los datos del ResultSet.
  13.  
  14. // Creamos las columnas.
  15. modelo.addColumn("id");
  16. modelo.addColumn("nombre");
  17. modelo.addColumn("telefono");
  18.  
  19. // Recorremos los registros con un ciclo while
  20. while (rs.next())
  21. {
  22.    // Se crea un array que será una de las filas de la tabla.
  23.    Object [] fila = new Object[3]; // Hay tres columnas en la tabla
  24.  
  25.    // Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
  26.    for (int i=0;i<3;i++)
  27.       fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.
  28.                                           //No es como en PHP o otros lenguajes donde los indices inician con 0
  29.  
  30.    // Se añade al modelo la fila completa.
  31.    modelo.addRow(fila);
  32. }

Y esto es todo es muy sencillo. Pero esta forma de hacerlo es una forma manual hay una forma mas facil de hacerlo usando Los Metadatos los cuales nos dan el numero de columnas que contiene el ResultSet, los nombres de los campos etc. Pero no me gusta manejarlo de esa forma ya que no puedo manipular el JTable a mi antojo.

En uno de los siguientes posts explicare los metadatos.

Related posts:

  1. Conectando a un servido MySQL y Ejecutando consultas con JAVA (ejemplo simple)
  2. Imprimir una tabla completa con PHP y MYSQL

12 Comments

  • emmanuel dice:

    Esta muy bien tu metodo pero tengo ahora un problema :S

    Si lo quiero colocar en la parte de abajo de un Frame, como le hago????

  • exodo999 dice:

    Si usas el netbeans solo es cuestion de mover el objeto y ponerlo en un contenedor.

  • spank dice:

    esta muy bien explicado, solo me keda uan duda

    en ke parte del codigo se mete?
    o se le agrega a algun metodo del jTable

  • exodo999 dice:

    No entiendo tu pregunta spank? en que parte del metodo se mete que?

    el codigo puede ser lanzado cuando clickees un boton o cuando el formulario se cargue, no se si a eso te refieras.

  • Carlos dice:

    Hola, soy programador y de verdad que tengo un lio con esto, anteriormente habia publicado y hecho programas que utilizan este tipo de codigos, pero ahora se me esta repitiendo los datos de las columnas, me explico.

    primero me muestra la 1,1 luego la 1,1 y 1,2 luego la 1,1 1,2 y 1,3 y asi sucesivamente.

    como encuentro tu pag. interesante decidi hacerte esta pregunta, espero puedas responderme. gracias

  • Carlos dice:

    el codigo es el siguiente:
    ResultSet comando = consulta.executeQuery(“SELECT * FROM Clientes”);
    ResultSetMetaData metaDatos = comando.getMetaData();
    int numeroColumnas = metaDatos.getColumnCount();
    Object[] nombreCampos = new Object[numeroColumnas];
    for (int i = 0; i < numeroColumnas; i++) {
    nombreCampos[i] = metaDatos.getColumnLabel(i+1);
    }

    modelo.setColumnIdentifiers(nombreCampos);

    while (comando.next()) {
    Object [] fila = new Object[numeroColumnas];
    for (int j=0;j<numeroColumnas;j++) {
    fila[j] = comando.getObject(j+1);
    modelo.addRow(fila);
    }
    comando.close();
    }

  • admin dice:

    trata sacando esto del for modelo.addRow(fila);
    y comando.close(); fuera del while si te das cuenta en mi codigo el for recorre todas las columnas y agrega el row y continua con el siguiente registro y en cambio en tu codigo no terminas de recorrer todo y agregas un campo por eso es que el recorrido te muestra datos invalidos.

  • Carlos dice:

    Mmmmm… Ya lo habia probado asi y me muestra todas las lienas, pero me las repite, es decir, si tengo una tabla con 3 columnas y 2 registros me muestra 3 veces el registro 1. Y la idea es vez cada registro.

  • admin dice:

    while (comando.next()) {
    Object [] fila = new Object[numeroColumnas];
    for (int j=0;j fila[j] = comando.getObject(j+1);
    }
    modelo.addRow(fila);
    }

    comando.close();

  • admin dice:

    checa el codigo que puse haber y me comentas

  • nelqui dice:

    Hola soy un poco nuevo en esto y solo estoy investigando y este es el unico que me convencio, solo que no me funciona. lo que no entiendo es como se pasa este codigo a mi jtable? porque ejecuto y no da error pero tampoco muestra algo. no hace nada.
    Saludo.

  • admin dice:

    El codigo lo puedes ejecutar en el Main de tu aplicacion o en el evento de un boton, tienes que haber declarado antes el nombre de tu TableView para poder enviarselo o simplemente no funcionara, si me pudieras mandar elerror que te marca podria ayudarte mas.

Trackbacks / Pingbacks

Leave a Reply

You must be logged in to post a comment.

Back to Top