有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何通过java连接正确使用MySQL“desc table”

我实际上正在构建一个项目,其中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、姓名、人口和国家代码。但在我的jTable中,只有“ID”出现

密码

int rowCount = tableModel.getRowCount();
for (int i = 0; i < rowCount; i++) {
tableModel.removeRow(i);
}

。。。从列表中选择新表时,只需删除旧表的字段。 希望我能澄清我的问题

请帮忙。谢谢


共 (1) 个答案

  1. # 1 楼答案

    问题就在这里

    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});
            }