Java 如何将ArrayList添加到jtable?

Java 如何将ArrayList添加到jtable?,java,swing,web-services,arraylist,glassfish,Java,Swing,Web Services,Arraylist,Glassfish,我一直在开发一个返回arraylist的web服务。如何将返回的arraylist添加到jtable并显示 ArrayList customerDetails = new ArrayList(); try { String sqlQuery = "SELECT * FROM customer WHERE AccountNumber="+accountNumber; PreparedStatement stmt = DatabaseConnectio

我一直在开发一个返回arraylist的web服务。如何将返回的arraylist添加到jtable并显示

    ArrayList customerDetails = new ArrayList();
    try {
        String sqlQuery = "SELECT * FROM customer WHERE AccountNumber="+accountNumber;
        PreparedStatement stmt = DatabaseConnection.dBconn().prepareStatement(sqlQuery);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {

            customerDetails.add(rs.getString("Name"));
            customerDetails.add(rs.getString("DoB"));
            customerDetails.add(rs.getString("Address"));
            customerDetails.add(rs.getString("Mobile"));
            customerDetails.add(rs.getString("Email"));
            customerDetails.add(rs.getString("AccountType"));
            customerDetails.add(rs.getString("AccountNumber"));
            customerDetails.add(rs.getString("SortCode"));
            customerDetails.add(rs.getString("Balance"));
            customerDetails.add(rs.getString("Card"));

        }
        return customerDetails;

    } catch (SQLException err) {
        System.out.println(err.getMessage());
    }
    return customerDetails;

让我们从以下事实开始:您的
ArrayList
不是按行/列分组的结构,您需要在
列表
中有一个
列表,其中外部列表是行,内部列表是列值

在进行此操作时,让我们也正确地使用
PreparedStatement
,并管理资源,以便在执行此操作时正确地关闭它们

ArrayList<List<String>> customerDetails = new ArrayList<>(25);
String sqlQuery = "SELECT * FROM customer WHERE AccountNumber=?";
try (PreparedStatement stmt = DatabaseConnection.dBconn().prepareStatement(sqlQuery)) {
    stmt.setString(1, accountNumber);
    try (ResultSet rs = stmt.executeQuery()) {

        while (rs.next()) {
            List<String> rowDetails = new ArrayList<>(10);
            rowDetails.add(rs.getString("Name"));
            rowDetails.add(rs.getString("DoB"));
            rowDetails.add(rs.getString("Address"));
            rowDetails.add(rs.getString("Mobile"));
            rowDetails.add(rs.getString("Email"));
            rowDetails.add(rs.getString("AccountType"));
            rowDetails.add(rs.getString("AccountNumber"));
            rowDetails.add(rs.getString("SortCode"));
            rowDetails.add(rs.getString("Balance"));
            rowDetails.add(rs.getString("Card"));

            customerDetails.add(rowDetails);
        }
    }

} catch (SQLException err) {
    System.out.println(err.getMessage());
}
return customerDetails;
这将使用
列表
作为列名,使用
列表
作为行数据

就我个人而言,我更喜欢将数据包装到某种普通的旧Java对象(POJO)中,因为它封装了数据,并在显示数据时提供了更大的灵活性(即,如果我不想,我需要显示对象的所有属性)


查看更多详细信息

让我们从以下事实开始:
ArrayList
不是按行/列分组的结构,您需要在
列表
中有一个
列表
,其中外部列表是行,内部列表是列值您的问题是将ArrayList添加到JTable,所以试试
我一直在开发一个返回arraylist的web服务。
-为什么它会返回arraylist?如果要从数据库获取所有数据,为什么不返回一个包含所有数据的
DefaultTableModel
。然后使用表模型创建
JTable
public class ListTableModel extends AbstractTableModel {

    private List<List<String>> rows;
    private List<String> columnNames;

    public ListTableModel(List<String> columnNames, List<List<String>> rows) {
        this.rows = new ArrayList<>(rows);
        this.columnNames = columnNames;
    }

    @Override
    public int getRowCount() {
        return rows.size();
    }

    @Override
    public int getColumnCount() {
        return columnNames.size();
    }

    @Override
    public String getColumnName(int column) {
        return columnNames.get(column);
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        Class type = String.class;
        return type;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        List<String> rowData = rows.get(rowIndex);
        return rowData.get(columnIndex);
    }
}