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.