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