domingo, 24 de agosto de 2014

Llenar un Datatable desde la base de datos

Después de haber aprendido a establecer la conexión a diferentes motores de base de datos mediante JDBC, el siguiente paso es realizar las consultas y mostrarlas. Para el ejemplo hago uso de un JTable para mostrar los datos provenientes de las consultas y para efectos didácticos he preferido usar PostgreSQL, aunque usted puede hacer uso del motor de base de datos que prefiera como cualquiera de las clases implementadas en los tópicos:  Establecer Conexión a Base de Datos con JDBC MYSQL y Establecer Conexión a Base de Datos con JDBC PostgreSQL, que deberán ser incluidas en su proyecto, lo único que debería hacer es cambiar las instancias a las clases correspondientes como se muestra en las líneas siguientes, todo lo demás se mantiene. Observar que para este ejemplo he construido un JTable con solo 3 columnas, por ello limitarse a una consulta que retorne 3 columnas o modificar el código respectivo para ampliarlo:


Conexión a PostgreSQL:

...
        Ejm3_ConectarPostgreSQL cnndb = new Ejm3_ConectarPostgreSQL();
        CachedRowSet crs = cnndb.Function("SELECT deptno, dname, loc FROM dept")
...
Conexión a MySQL:

...
        Ejm2_ConectarMySQL cnndb = new Ejm2_ConectarMySQL();
        CachedRowSet crs = cnndb.Function("SELECT Host, User, Password FROM user");
...

Código de Ejemplo:

package jimmyosmar;

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

/**
 *
 * @author jimmyosmar
 */
public class Ejm_LlenarJTableDesdeDataBase extends JFrame{

    DefaultTableModel dtmEjemplo;
    JTable tblEjemplo;
    JScrollPane scpEjemplo;
    public Ejm_LlenarJTableDesdeDataBase()
    {

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

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

        setFilas();

        tblEjemplo.setModel(dtmEjemplo);
        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 setFilas()
    {
        //Conectar a PostgreSQL\\
        Ejm_ConectarPostgreSQL cnndb = new Ejm_ConectarPostgreSQL();
        CachedRowSet crs = cnndb.Function("SELECT deptno, dname, loc FROM dept");

        Object datos[]=new Object[3]; //Numero de columnas de la tabla

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

            crs.close();
        } catch (Exception e) {
        }
    }

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

}

0 comentarios :

Publicar un comentario