Ich habe einen Web Service, der ArrayList<String>
von Datenbank zurückgibt. Ich muss eine jTable
auf Client-Java-Anwendung mit dem ArrayList
auffüllen. Wie kann ich die ArrayList
so organisieren, dass sie in richtigen Zeilen auf dem Tisch erscheint? Momentan gibt es jedes Element zurück, getrennt durch Komma. HierFüllen Sie jTable aus ArrayList <String>, ohne eine neue Klasse zu erstellen.
ist das WebMethod Bit:
@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");
}
}
}
}
Das gibt:
[TestName1, 46484654897, Name2, 646543543, emp3, 534354354]
Der Client-Knoten wie folgt aussieht, die ich in einem anderen Verfahren laufen:
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);
}
Diese bevölkert nur TestName1, 46484654897,
in etwa 10 Zeilen.
Ich muss TestName1, Name2, emp3,
in separaten Zeilen in der ersten Spalte der Tabelle und 46484654897, 646543543, 534354354
in separaten Zeilen in der zweiten Spalte anzeigen.
Zur Klarstellung: Versuchen Sie, eine Tabelle zu erstellen, die den Namen und die Kontonummer 1 pro Zeile enthält? Also: testname1, 46484654897 in der ersten Zeile, name2, 646543543 in der zweiten Zeile, etc? –
Richtig, das ist das Ziel. –