J'ai un service Web qui renvoie ArrayList<String>
à partir de la base de données. J'ai besoin de remplir un jTable
sur l'application Java client avec ce ArrayList
. Comment est-ce que je peux organiser le ArrayList
, ainsi il montre dans les rangées correctes sur la table? Actuellement, il retourne chaque élément, séparé par une virgule.Remplir jTable à partir de ArrayList <String>, sans créer de nouvelle classe.
Voici le bit WebMethod:
@WebMethod(operationName = "ListCustomers")
public ArrayList ListCustomers() {
try{
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/BankDB", "bankadmin", "bankadmin");
Statement st = con.createStatement();
PreparedStatement prst = con.prepareStatement("select Name, AccountNumber from CUSTOMERS");
ArrayList<String> list = new ArrayList<>();
ResultSet rs = prst.executeQuery();
while(rs.next()){
String nm = rs.getString("Name");
String an = rs.getString("AccountNumber").toString();
list.add(new String (nm));
list.add(new String (an));
}
return (ArrayList) list;
}
catch(SQLException ex){
System.err.println(ex.getMessage());
return null;
}
catch (ClassNotFoundException ex) {
Logger.getLogger(BankServerService.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("second");
return null;
}
finally{
if(st != null){
try {
st.close();
}
catch(SQLException ex){
System.out.println("Could not close statement");
}
}
}
}
Ce retour:
[TestName1, 46484654897, Name2, 646543543, emp3, 534354354]
Le nœud client ressemble à ceci, que je dirige dans une autre méthode:
listCustomers();
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
Object rowData[] = new Object[listCustomers().size()];
for (int i=0; i<listCustomers().size(); i++){
rowData[i] = listCustomers().get(i);
model.addRow(rowData);
}
Ce Remplit seulement TestName1, 46484654897,
en comme 10 lignes.
J'ai besoin de montrer TestName1, Name2, emp3,
sur des lignes séparées sur la 1ère colonne de la table, et 46484654897, 646543543, 534354354
sur des lignes séparées sur la 2ème colonne.
Pour clarifier: Essayez-vous de le faire créer une table qui a le nom et le numéro de compte, 1 par ligne? donc: testname1, 46484654897 sur la première rangée, name2, 646543543 sur la deuxième rangée, etc? –
Correct, c'est l'objectif. –