sto cercando di riemire una JTable prendendo i dati da un metodo che esegue una query su db:
il metodo ritorna un Object[].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(); }
nel JPanel ho un JButton con questo evento:
il problema è che la JTable viene riempita con solo 5 righe mentre dovrebbero essere 107.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()); } }
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[].

Rispondi quotando
