ResultSet & JTable

Basado en el tutorial Meter un ResultSet en un JTable veremos muy brevemente como hacerlo, destacando las principales líneas del código.

  • En primera instancia nos conectamos a la BD y ejecutamos la consulta SQL que nos llenará el ResultSet

DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//Reemplazar localhost, prueba, usuario y clave por los host de la base de datos, nombre de esquema, user y pass.
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba","usuario","clave");

Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery("select * from persona");

  • Crear un JTable, pasando como parámetro un DefaultTableModel

DefaultTableModel modelo = new DefaultTableModel();
JTable tabla = new JTable(modelo);

  • Nos queda resolver como llenar el DefaultTableModel. Básicamente, la forma es esta:

// Creamos las columnas.
modelo.addColumn("id");
modelo.addColumn("nombre");
modelo.addColumn("nacimiento");

// Bucle para cada resultado en la consulta
while (rs.next()) {
   // Se crea un array que será una de las filas de la tabla.
   Object [] fila = new Object[3]; // Hay tres columnas en la tabla

   // Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
   for (int i=0;i<3;i++)
      fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.

   // Se añade al modelo la fila completa.
   modelo.addRow(fila);
}

  • Una alternativa propuesta en el tutorial es crear una clase ConversorResultSetADefaultTableModel (puedes optar por un nombre más corto ;-) ) que haciendo uso del atributo ResultSetMetaData del ResultSet pueda obtener la metadata de las columnas seleccionadas. De esta forma, nos independizamos de la consulta que se realice y el número de filas y columnas devueltas.
19 comentario en este artículoDeje el suyo
  1. Hoye, que bien, es un buen tutorial asi por decirlo, da grandes ideas para hacer otras cosas.
    Talves te animarias hacerlo con JTable, también insertar un regsitro desde un text Fields, y nostralo en JTable.

    Saludo ………..

  2. Si, está bueno como comienzo… obviamente, el próximo paso es hacer un pequeño ABM.

  3. Hola tengo una duda y un problemilla estoy haciendo un programita en java, me conecto a la base de datos de mysql aqui el problema es como puedo hacer para saber si la sentencia trae datos no?

  4. Oye buenisimo me ayudo no tienes idea me aclaro algunas dudas y sobre todo me salio mi tabla buenisimo gracias

  5. una pregunta, esto en ke parte del codigo se mete????
    dentro del jTable o en donde?

  6. Oe yo lo implemente con la clase que generaliza el JTable pero el problema es q demora mucho en reportar los datos, son aprox 10000 registros, es lento debido al num d reg o es q habre hecho algo mal?

  7. Hola, esta muy bien explicado y si me sirvio mucho asi k muchas grax por la ayuda.

  8. muchisimas gracias que sencillo pero efectivo….. me sirvio mucho

  9. buenisimo me sirvio mucho, pero tengo una duda como hago si kiero agregar datos desde una tabla y que se pueda guardar en una base de datos. gracias

  10. mire el mismo mas detallado si no entendio este ………………….http://pshycodelic.blogspot.com/2009/03/meter-un-resultset-en-jtable.html

  11. Buenisimo, en verdad me ayudo, lo que quiero ahora es colocar por lo menos en cada fila verdad como una imagen donde yo le de click y cada persona que aparesca de la base de datos la pueda modificar: algo asi : nombre-apellido————imagen:modificar datos, creo que alli tendria que trabajar con los eventos del raton verdad??

  12. che esta bueno la info, pero tengo un problema no me muestra la tabla cuando lo ejecutoo como puedo solucionar esto, esto es lo q hagoo: me compila bien por no me muestra la tabla por pantalla si alguien puede ayudarmee mil gracias

    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    Connection conexion = (Connection) DriverManager.getConnection(“jdbc:mysql://localhost/alumnos”, “root”, “123″);
    Statement s = (Statement) conexion.createStatement();
    ResultSet rs = s.executeQuery(“select * from alum”);
    //aca cramos un jtable
    DefaultTableModel modelo = new DefaultTableModel();

    // Creamos las columnas.
    modelo.addColumn(“Nombre”);
    modelo.addColumn(“Apellido”);

    // Bucle para cada resultado en la consulta
    while (rs.next())
    {
    // Se crea un array que será una de las filas de la tabla.
    Object [] fila = new Object[2]; // Hay 2 columnas en la tabla

    // Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
    for (int i=0;i<2;i++)
    fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.

    // Se añade al modelo la fila completa.
    modelo.addRow(fila);

    }
    JTable tabla = new JTable(modelo);
    tabla.setModel(modelo);
    JScrollPane scroll = new JScrollPane();
    scroll.setViewportView(tabla);

    } catch (SQLException ex) {
    Logger.getLogger(planilla2.class.getName()).log(Level.SEVERE, null, ex);
    }

    }

  13. Pablo , no soy un experto pero deberias de poner el scroll en un panel y el panel en un frame y mostrar el frame, creo que asi es como funciona

  14. Buen dia… tengo una problema con el JTable,, quiero meter en una variable un valor que yo seleccione del jtable..

  15. En donde puedo conseguir ese control personalizado de la jtable, esta muy bueno.

  16. Esta muy buena gracias

  17. pablo.
    Arreglaste tu problema con lo que te dejo ciberex?

  18. Como hago para navegar en el jtable con botones, es decir SIGUIENTE – ANTERIOR – ULTIMO PRIMERO y SQL??

  19. hola amigo… tendras algun ejemplo para realizar la paginacion del jtable asi como lo tienes en la imagen que sta al principio del post… yo necesito hacer eso pero no he encontrado nada al respecto ojala puedas ayudarme

Deje su comentario

Por favor, ingrese su nombre

Por favor, ingrese un correo-e válido

Por favor, ingrese su mensaje

luauf.com 2012

WordPress