Java MySQL错误:找不到列?

Java MySQL错误:找不到列?,java,mysql,swing,Java,Mysql,Swing,我这里有一个代码: try { rs = stmt.executeQuery("SELECT * FROM systemaccount where ID = '"+getValue+"'"); while(rs.next()) { fname.setText(rs.getString("First_Name")); mname.setSelectedItem(r

我这里有一个代码:

try {
            rs = stmt.executeQuery("SELECT * FROM systemaccount where ID = '"+getValue+"'");
            while(rs.next())
            {
                fname.setText(rs.getString("First_Name"));
                mname.setSelectedItem(rs.getObject("Middle_name"));
                lname.setText(rs.getString("Last_Name"));
                address.setText(rs.getString("address"));
                contact.setText(rs.getString("Contact_Number"));
                user.setText((String) getValue((Integer) rs.getObject("User"), "user"));
                usertype.setSelectedItem(getValue((Integer) rs.getObject("user_type"), "user_type")); //<-----THE ERROR IS HERE
            }
        } catch (SQLException ex) {
            Logger.getLogger(SystemAccount.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println(ex.getMessage());
        }

有什么提示吗?

尝试使用不同的列名,而不是用户类型。

创建对象数组

ResultSet results = myStatement.executeQuery("SELECT * FROM systemaccount where ID = "+getValue);

    ResultSetMetaData meta = results.getMetaData();
    while (results.next()) {
      Object[] data = new Object[meta.getColumnCount()];
      for (int index = 1; index <= data.length; index++) {
          data[index - 1] = results.getObject(meta.getColumnName(index));
          System.out.println("Column " + index + " is named " + meta.getColumnName(index) + " having value " + data[index - 1]);
      }
      // fname.setText(data[0].toString());
      ...
    }

所以我现在有了这个答案哦,我的天啊,在有了一个世纪的感觉之后

所以在@SanjayChavan的代码片段的帮助下,我终于得到了代码

int row = tbl_data.getSelectedRow();
        Integer ID = (Integer) tbl_data.getModel().getValueAt(row, 0);
        try {
            rs = stmt.executeQuery("SELECT * FROM systemaccount where ID = "+ID);
            ResultSetMetaData meta = rs.getMetaData();
            Object[] data = new Object[meta.getColumnCount()];

            while(rs.next())
            {
                for (int index = 1; index <= meta.getColumnCount(); index++) {
                    System.out.println("Column " + index + " is named " + meta.getColumnName(index));
                    data[index - 1] = rs.getObject(meta.getColumnName(index));
                }

                fname.setText((String) data[1]);
                mname.setSelectedItem((String) data[2]);
                lname.setText((String) data[3]);
                address.setText((String) data[4]);
                contact.setText((String) data[5]);
                user.setText((String) getValue((Integer) data[6], "user"));
                usertype.setSelectedItem(getValue((Integer)data[7], "usertype"));
            }
        } 
        catch (SQLException ex) {
            Logger.getLogger(SystemAccount.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println(ex.getMessage());
        }
    }

这就是现在的样子。经过几个小时的测试。首先,我不会接受他的代码片段作为答案,尽管它是有效的,但由于在没有.next函数的情况下访问函数的错误,我不能接受。所以我所做的是将填充数据放入while循环中的数组中,这样它就不会像ResultSet开始之前那样出错,从而生成一个有效的数组。谢谢大家

我想没有人知道解决办法。什么原因?如何解决呢?我认为这也是我最糟糕的情况/最后的选择试试你最坏的情况。若它工作,那个么问题是mysql,否则检查完整的异常堆栈跟踪。可能会有帮助。我试着把它改成usertype。它仍然找不到该列,但resultsetmetadata可以识别它:请在不访问用户类型字段的情况下尝试您的代码。检查mysql表中的代码或列名是否有任何前导或尾随空格s。如果ResultSetMetaData有效,最后必须使用它。迭代此数组以将数据库值保存到变量。Oops代码中有一个错误:java.sql.SQLException:在数据[index-1]行的结果集开始之前=rs.getObjectmeta.getColumnNameindex;抱歉,我在for循环中错误地使用了rs而不是结果。您的代码仍然不起作用,原因是。使用.getObject或.getString函数时需要下一步,对吗?是的,我们得到了相同的结果。我也发布了我的答案。
int row = tbl_data.getSelectedRow();
        Integer ID = (Integer) tbl_data.getModel().getValueAt(row, 0);
        try {
            rs = stmt.executeQuery("SELECT * FROM systemaccount where ID = "+ID);
            ResultSetMetaData meta = rs.getMetaData();
            Object[] data = new Object[meta.getColumnCount()];

            while(rs.next())
            {
                for (int index = 1; index <= meta.getColumnCount(); index++) {
                    System.out.println("Column " + index + " is named " + meta.getColumnName(index));
                    data[index - 1] = rs.getObject(meta.getColumnName(index));
                }

                fname.setText((String) data[1]);
                mname.setSelectedItem((String) data[2]);
                lname.setText((String) data[3]);
                address.setText((String) data[4]);
                contact.setText((String) data[5]);
                user.setText((String) getValue((Integer) data[6], "user"));
                usertype.setSelectedItem(getValue((Integer)data[7], "usertype"));
            }
        } 
        catch (SQLException ex) {
            Logger.getLogger(SystemAccount.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println(ex.getMessage());
        }
    }