Ciao,
ho creato una JTable e vorrei riempirla con i dati prelevati tramite la select di una tabella che ha numero di colonne fisse e numero di righe variabili.
dato il seguente codice creo la tabella:
<code>
String[] columnNames;
Object[][] data;
private JTableHeader j;
columnNames = new String[]{"A","B","C","D","E", };
data =new Object[][]{};
JTable table = new JTable(data, columnNames);
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
table.setEnabled(false);
j=new JTableHeader();
j=table.getTableHeader();
add(j);
j.setBounds(80, 80, 800, 30);
add(scrollPane);
scrollPane.setBounds(12, 110, 1000, 400);
<code\>
Attualmente la tabella è vuota perche a data assegno un new Object[][] vuoto
e prelevando i dati da tabella tramite il codice:
<code>
public Vector VisualizzaTabella(String t) throws RemoteException {
tabella=t;
Database db = new Database("nomedb","nomeutente","");
if ( !db.connetti() ) {
System.out.println("Errore durante la connessione.");
System.out.println( db.getErrore() );
System.exit(0);
}
Vector b=db.eseguiQuery("SELECT * FROM '"+tabella+"'");
// Ora chiudo la connessione col Database:
db.disconnetti();
return b;
}
}
<code\>
dove db è un oggetto della classe Database e la funzione eseguiQuery è così definita:
<code>
public Vector eseguiQuery(String query) {
Vector v = null;
String [] record;
int colonne = 0;
try {
Statement stmt = db.createStatement(); // Creo lo Statement per l'esecuzione della query
ResultSet rs = stmt.executeQuery(query); // Ottengo il ResultSet dell'esecuzione della query
v = new Vector();
ResultSetMetaData rsmd = rs.getMetaData();
colonne = rsmd.getColumnCount();
while(rs.next()) { // Creo il vettore risultato scorrendo tutto il ResultSet
record = new String[colonne];
for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
v.add( (String[]) record.clone() );
}
rs.close(); // Chiudo il ResultSet
stmt.close(); // Chiudo lo Statement
} catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }
return v;
}
<code\>
come devo fare per assegnare a data i valori estrapolati dalla SELECT correttamente e riempire quindi la mia tabella con i dati prelevati dal database?
Grazie mille!!!