MySQL错误:找不到列?

时间:2015-10-12 11:43:05

标签: java mysql swing

所以我在这里有这个代码:

jTable

基本上我的代码所做的就是,当我双击ComboBox时,它会自动填充TextFieldsMySQL。但user_type会发出错误,指出它找不到任何user_type列名称。

如下所示,我证明它的列名为java.sql.SQLException: Column 'user_type' not found. error on the line usertype.setSelectedItem(getValue((Integer) rs.getObject("user_type"), "user_type"));

systemaccount table having user_type column

我总是得到

{{1}}

有关正在发生的事情的任何提示?

3 个答案:

答案 0 :(得分:0)

尝试使用不同的列名(“user_type”除外)。

答案 1 :(得分:0)

创建对象数组。

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

答案 2 :(得分:0)

所以我现在有了这个答案哦,天哪,感觉像是一个世纪之后。

所以在@ 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循环中的数组中,这样它就不会像before start of ResultSet那样出错,而且它会产生一个有效的错误。谢谢大家!!!!!