如何将数据库中的所有记录显示给JTable?

enj*_*eru 1 java mysql swing jtable

劳驾.我想在JTable中显示所有记录.但我感到困惑,因为我的编码只显示了1条记录.当我再次点击它时,它只显示相同的记录.你能帮我怎样获取所有记录吗?

try {

            Statement stmt;
            stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM menu");

            if (rs.next()) {
                String menu_id = rs.getString("menu_id");
                String menu_type = rs.getString("menu_type");
                String menu_cat = rs.getString("menu_cat");
                String menu_name = rs.getString("menu_name");
                String menu_price = rs.getString("menu_price");

                DefaultTableModel model = (DefaultTableModel) tblMenu.getModel();
                model.addRow(new Object[]{menu_id, menu_type, menu_cat, menu_name, menu_price});
            }

        } catch (Exception e) {
            System.out.println("Failed " + e);
        }
Run Code Online (Sandbox Code Playgroud)

我不知道如何编码.谢谢

jue*_*n d 5

更改

if (rs.next())
Run Code Online (Sandbox Code Playgroud)

while (rs.next())
Run Code Online (Sandbox Code Playgroud)

不只是一次运行到代码块,而是直到结束ResultSet.

它应该看起来像这样

DefaultTableModel model = (DefaultTableModel) tblMenu.getModel();
while (rs.next()) {
    String menu_id = rs.getString("menu_id");
    String menu_type = rs.getString("menu_type");
    String menu_cat = rs.getString("menu_cat");
    String menu_name = rs.getString("menu_name");
    String menu_price = rs.getString("menu_price");

    model.addRow(new Object[]{menu_id, menu_type, menu_cat, menu_name, menu_price});
}
Run Code Online (Sandbox Code Playgroud)

  • 并且不要使用`while`循环创建一个新的`DefaultTableModel` (2认同)