Este es el Ejemplo #15 del Topic: Programación Gráfica en Java.
Antes había explicado como retornar una consulta a base de datos mediante un CacheRowSet, Ahora explicaré otra de las formas que existe para retornar los datos pasándolos desde un ResultSet hacia un array.
La siguiente función actuará dentro del método que se encargará de establecer la conexión y retornar los datos en forma de un arreglo.
... private Object[][] ResultSetToArray(ResultSet rs) { Object obj[][]=null; try { rs.last(); ResultSetMetaData rsmd = rs.getMetaData(); int numCols = rsmd.getColumnCount(); int numFils =rs.getRow(); obj=new Object[numFils][numCols]; int j = 0; rs.beforeFirst(); while (rs.next()) { for (int i=0;i<numCols;i++) { obj[j][i]=rs.getObject(i+1); } j++; } } catch(Exception e) { } return obj; } ...
Código de Ejemplo:
package beastieux.gui; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; /** * * @author beastieux */ public class Ejm15_ResultSetToArray extends JFrame { public Ejm15_ResultSetToArray() { JTable tblEjemplo = new JTable(); JScrollPane scpEjemplo= new JScrollPane(); //Llenamos el modelo DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(), getColumnas()); tblEjemplo.setModel(dtmEjemplo); scpEjemplo.add(tblEjemplo); this.add(scpEjemplo); this.setSize(500, 200); scpEjemplo.setViewportView(tblEjemplo); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); } //Datos de las filas private Object[][] getFilas() { Object fila[][]=FuncionPostgreSQL("SELECT * FROM tabla"); return fila; } //Encabezados de la tabla private String[] getColumnas() { String columna[]=new String[]{"Columna1","Columna2","Columna3"}; return columna; } private Object[][] ResultSetToArray(ResultSet rs) { Object obj[][]=null; try { rs.last(); ResultSetMetaData rsmd = rs.getMetaData(); int numCols = rsmd.getColumnCount(); int numFils =rs.getRow(); obj=new Object[numFils][numCols]; int j = 0; rs.beforeFirst(); while (rs.next()) { for (int i=0;i<numCols;i++) { obj[j][i]=rs.getObject(i+1); } j++; } } catch(Exception e) { } return obj; } private Object[][] FuncionPostgreSQL(String sql) { try { Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://127.0.0.1:5432/postgres"; Connection con = DriverManager.getConnection(url, "usuario","contraseña"); Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = s.executeQuery(sql); Object[][] arr = ResultSetToArray(rs); s.close(); rs.close(); con.close(); return arr; } catch(Exception e) { System.out.println(e.getMessage()); } return null; } public static void main(String args[]) { Ejm15_ResultSetToArray obj = new Ejm15_ResultSetToArray(); obj.setVisible(true); } }
Pueder ir al artículo principal:
Códigos Sencillos hechos en Java
hermano como hago para ingresar un vector a una tabla de la base de datos
Excelente, muchas gracias!!
Buena explicación del código , sirvió de mucho !!!!!!»
gracias me funciono perfecto
Exceletene aporte me ayudo mucho! 🙂