实际上,我正在构建一个项目,在这个项目中,mysql数据库中的表名以java的形式显示在列表中。
用户从列表中选择一个表,并使用“desc tablename”命令指定该表的说明。
问题是,它应该得到表中的每个字段,但它只得到第一个字段。下面我已经解释了更多,但首先我的代码是:

 try {
            int rowCount = tableModel.getRowCount();
            for (int i = 0; i < rowCount; i++) {
                tableModel.removeRow(i);
            }
            String z = jList2.getSelectedValue().toString();
            try {
                Class.forName("java.sql.DriverManager");
            } catch (ClassNotFoundException e) {
                timeget();
                jTextArea4.append(now + ":   " + "/ Failed in getting Driver \n Error Message: " + e.getMessage() + " / \n \n");
                JOptionPane.showMessageDialog(this, e.getMessage());
            }
            DriverManager.getConnection("jdbc:mysql://localhost:" + GlobalParams.portvar + "/", "" + k, "" + j);
            stmnt = (Statement) con.createStatement();
            String query = "desc " + z;
            jTextArea5.append(now + ":   " + "/ desc " + z + "; / \n \n");
            ResultSet rs = stmnt.executeQuery(query);
            String[] cnames = {"Field", "Type", "Null", "Key", "Extra"};
            tableModel.setColumnIdentifiers(cnames);
            jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
            jTable1.setFillsViewportHeight(true);
            if (rs.next()) {
                String field = rs.getString("Field");
                String type = rs.getString("type");
                String nullinfo = rs.getString("null");
                String key = rs.getString("key");
                String extra = rs.getString("extra");
                tableModel.addRow(new Object[]{field, type, nullinfo, key, extra});
            }
catch(SQLException e){//some blabla}

现在详细讨论问题->
比如从列表中,我选择了一个名为“city”的表。最初,它有四个字段-ID、Name、Population、CountryCode。但在我的jTable中,只有“ID”出现。
密码。。。
int rowCount = tableModel.getRowCount();
for (int i = 0; i < rowCount; i++) {
tableModel.removeRow(i);
}

…只是在从列表中选择新表时删除旧表的字段。
希望我澄清了我的问题。
请帮忙。谢谢。

最佳答案

问题在于

if (rs.next()) {
                String field = rs.getString("Field");
                String type = rs.getString("type");
                String nullinfo = rs.getString("null");
                String key = rs.getString("key");
                String extra = rs.getString("extra");
                tableModel.addRow(new Object[]{field, type, nullinfo, key, extra});
            }

你不是在继续循环
将if循环更改为while循环
while(rs.next()) {
            String field = rs.getString("Field");
            String type = rs.getString("type");
            String nullinfo = rs.getString("null");
            String key = rs.getString("key");
            String extra = rs.getString("extra");
            tableModel.addRow(new Object[]{field, type, nullinfo, key, extra});
        }

08-04 13:47