sto cercando di riemire una JTable prendendo i dati da un metodo che esegue una query su db:
codice:
public Object[] select() throws ClassNotFoundException, SQLException, IOException {
ArrayList<String> list = null;
conn = DBManager.getInstance().takeConnection();
CallableStatement cstmt = conn.prepareCall("{ CALL getBook() }");
ResultSet rs = cstmt.executeQuery();
while (rs.next()) {
list = new ArrayList<String>();
list.add(String.valueOf(rs.getInt("book_id")));
list.add(rs.getString("title"));
list.add(rs.getString("author_name"));
list.add(rs.getString("editor_name"));
list.add(String.valueOf(rs.getDouble("price")));
list.add(rs.getString("isbn"));
list.add(rs.getString("note"));
// ((MyTableModel) PanelTable.getTable().getModel()).addRow(list.toArray());
}
cstmt.close();
return list.toArray();
}
il metodo ritorna un Object[].
nel JPanel ho un JButton con questo evento:
codice:
private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {
try {
MyTableModel newModel = (MyTableModel) tableData.getModel();
while (newModel.getRowCount() > 0) {
newModel.removeRow(0);
}
for (int i = 0; i < dbman.select().length; i++) {
((MyTableModel) tableData.getModel()).addRow(dbman.select());
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
} catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
il problema è che la JTable viene riempita con solo 5 righe mentre dovrebbero essere 107.
inoltre i valori sono sempre gli stessi.
penso che sto sbagliando nel modo di iterare ma le ho provate un pò tutte.
MyTableModel è un table model che estende DefaultTableModel.
il metodo addRow richiede un Object[].