Si je me retourne vers vous aujourd'hui, c'est pour avoir plus de précisions ainsi que de l'aide dans mon idée qui est de pouvoir ajouter dans une jtable le résultat d'un query.
Après une dizaine de tutoriels trouvés sur internet (tous différents avec pleins de méthodes), cela ne m'a pas été d'une grande aide et je suis encore bloqué.
Je me permets donc de vous partager mon code dans l'espoir que vous ayez une solution pour moi et que je puisse mieux comprendre les raisons de ce bloquage.
Je m'excuse par avance pour la qualité du code, ceci est dan le but d'un projet que j'ai reçu au dernier moment et n'ayant que très peu de connaissance en java.... Cela peut être visuellement catastrophique.
public void table() throws SQLException, ClassNotFoundException {
String[] titles={"id","email", "first name", "last name","Points"};
String[][] data= getData();
table1 = new JTable(data, titles);
table1.setPreferredScrollableViewportSize(new Dimension(300, 200));
table1.setFillsViewportHeight(true);
// ContainTable = new JScrollPane(table1);
ContainTable = new JScrollPane(table1,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
PannelConnexion = new JPanel();
PannelConnexion.add(ContainTable);
PannelConnexion.setBackground(Color.decode("003023242"));
card.add(PannelConnexion,BorderLayout.CENTER);
}
public static String[][] getData() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:8889/drivncook","*","*");
PreparedStatement statement = con.prepareStatement("select * from user");
ResultSet rs=statement.executeQuery();
LinkedList<String[]> objs = new LinkedList<>();
while (rs.next() ) {
String id = String.valueOf(rs.getInt("id"));
String email = rs.getString("email");
String firstName = rs.getString("first_name");
String lastName = rs.getString("last_name");
String points = String.valueOf(rs.getInt("euro_points"));
String[] obj = new String[5];
obj[0]= id;
obj[1] = email;
obj[2]= firstName;
obj[3]= lastName;
obj[4]= points;
objs.add(obj);
}
String[][] data = new String[5][objs.size()];
objs.toArray(data);
rs.close();
return data;
}
}
Ma fonction table s'occupe due créer une jtable avec le header déjà rempli et d'autres paramètres sans importances.
Le plus gros se situe dans getData où je tente avec mon query de récupérer plusieurs informations de mon user (mais en vain).
J'espère ne pass vous avoir fait trop peur et que nous pourrons trouver une solution ensemble !
Je reviens après plusieurs jours ca bla solution était en fait bien plus simple.
Pour ceux qui en aurait besoin, la voici:
public void table() throws SQLException, ClassNotFoundException {
String[] titles={"id","email", "first name", "last name","Points"};
DefaultTableModel tableModel = new DefaultTableModel(titles, 0);
tableModel = updateTable(titles);
table1 = new JTable(tableModel);
table1.setPreferredScrollableViewportSize(new Dimension(450, 150));
table1.setFillsViewportHeight(true);
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment( SwingConstants.CENTER );
for(int x=0;x<5;x++){
table1.getColumnModel().getColumn(x).setCellRenderer( centerRenderer );
}
ContainTable = new JScrollPane(table1,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
PannelConnexion = new JPanel();
PannelConnexion.add(ContainTable);
PannelConnexion.setBackground(Color.decode("003023242"));
card.add(PannelConnexion,BorderLayout.CENTER);
}
public DefaultTableModel updateTable(String[] titles) throws ClassNotFoundException, SQLException {
DefaultTableModel tableModel = new DefaultTableModel(titles, 0);
Class.forName("com.mysql.jdbc.Driver");
Connection con= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/drivncook", "*****", "*******");
PreparedStatement statement = con.prepareStatement("select * from user");
ResultSet rs=statement.executeQuery();
while (rs.next()) {
String id = String.valueOf(rs.getInt("id"));
String email = rs.getString("email");
String firstName = rs.getString("first_name");
String lastName = rs.getString("last_name");
String points = String.valueOf(rs.getInt("euro_points"));
// create a single array of one row's worth of data
String[] data = { id, email, firstName,lastName,points } ;
// and add this row of data into the table model
tableModel.addRow(data);
}
con.close();
return tableModel;
}
Bonne journée à tous !
Afficher dans une Jtable le résultat d'un query
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.