Código Java – Procedimiento para llenar un JTable desde un CachedRowSet

Este es el Ejemplo #14 del Topic: Programación Gráfica en Java.

En un post anterior se ha definimos a un CachedRowSet como un Resultset con privilegios de manipulación al mantener la conexión cerrada.
El siguiente procedimiento se encargará de pasar los datos contenidos en un CachedRowSet hacia un JTable teniendo como puente a un modelo construido previamente, este procedimiento simplificará la tarea al momento de querer realizar el llenado de un JTable a partir de una CachedRowSet.

...
    private void CachedRowSetToJTable(CachedRowSet crs, DefaultTableModel modelo,JTable tbl)
    {

        try
        {
                ResultSetMetaData rsmd = crs.getMetaData();
                int numCols = rsmd.getColumnCount();

                modelo.setRowCount(0);

                Object []datos = new Object[numCols];

                while (crs.next())
                {
                    for (int i=0;i<numCols;i++)
                    {
                            datos[i]=crs.getObject(i+1);
                    }

                    modelo.addRow(datos);
                }
                tbl.setModel(modelo);
                crs.close();

        }
        catch(Exception e)
        {
                System.out.println(e.getMessage());
        }
    }
...

Código de Ejemplo:

package beastieux.gui;

import java.sql.ResultSetMetaData;
import javax.sql.rowset.CachedRowSet;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author beastieux
 */
public class Ejm14_CachedRowSetToJTable extends JFrame{

    DefaultTableModel dtmEjemplo;
    JTable tblEjemplo;
    JScrollPane scpEjemplo;

    public Ejm14_CachedRowSetToJTable()
    {

        tblEjemplo = new JTable();
        scpEjemplo= new JScrollPane();

        //Llenamos el modelo
        dtmEjemplo = new DefaultTableModel(null,getColumnas());

        //Conectar a la Base de datos
        Ejm12_1_ConectarPostgreSQL cnndb = new Ejm12_1_ConectarPostgreSQL();
        CachedRowSet crs = cnndb.Function("SELECT deptno, dname, loc FROM dept");

        //Pasar el CachedRowSet(crs) al JTable(tblEjemplo)
        CachedRowSetToJTable(crs,dtmEjemplo,tblEjemplo);

        scpEjemplo.add(tblEjemplo);
        this.add(scpEjemplo);
        this.setSize(500, 200);

        scpEjemplo.setViewportView(tblEjemplo);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    }

    //Encabezados de la tabla
    private String[] getColumnas()
    {
          String columna[]=new String[]{"Columna1","Columna2","Columna3"};
          return columna;
    }

    private void CachedRowSetToJTable(CachedRowSet crs, DefaultTableModel modelo,JTable tbl)
    {

        try
        {
                ResultSetMetaData rsmd = crs.getMetaData();
                int numCols = rsmd.getColumnCount();

                modelo.setRowCount(0);

                Object []datos = new Object[numCols];

                while (crs.next())
                {
                    for (int i=0;i<numCols;i++)
                    {
                            datos[i]=crs.getObject(i+1);
                    }

                    modelo.addRow(datos);
                }
                tbl.setModel(modelo);
                crs.close();

        }
        catch(Exception e)
        {
                System.out.println(e.getMessage());
        }
    }

    public static void main(String args[]) {
        Ejm14_CachedRowSetToJTable obj1 = new Ejm14_CachedRowSetToJTable();
        obj1.setVisible(true);
    }

}

Pueder ir al artículo principal:

Códigos Sencillos hechos en Java

Deja un comentario