“找不到列”错误?

时间:2011-01-03 14:40:33

标签: java database

我需要以下错误的帮助。下面是方法retrievePassword()。我对它进行了编程,以便在调用Clickid时,我也可以检索所有其他数据。

public boolean retrievePassword() {
  // declare local variables
  boolean success = false;
  ResultSet rs = null;
  DBController db = new DBController();

  // step 1 of using DBController, passing data source name setup during last practical
  db.setUp("myDatabase");

  // declare the SQL 
  String dbQuery = "SELECT Clickid FROM PROFILE WHERE Clickid = '" + clickId + "'" ;


  // step 2 of using DBCcontroller, for retrieve SQL use readRequest method
  rs = db.readRequest(dbQuery);
  try{
     if (rs.next()){
   firstName = rs.getString("Firstname");
   lastName = rs.getString("LastName");
          password = rs.getString("Password");
          email = rs.getString("Email");

          success = true;     
     }
  }
  catch (Exception e) {
     e.printStackTrace();
  }
  db.terminate();
  return success;
 }

我检查过并且所有列名都正确无误。我认为问题在于上述方法或下面的实例化

 String first = jTextFieldFirst.getText();
 String email = jTextFieldEmail.getText();
 Profile p2 = new Profile(jTextFieldId.getText());
 p2.retrievePassword();
 String firstName = p2.getFirstName();
 String email2 = p2.getEmail();
 if(email == email2 && first == firstName)
 JOptionPane.showMessageDialog(null, "Your Password is "+p2.getPassword(),
        "Retrieve Password",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null, "Some information you entered is incorrect", "Retrieve Password",JOptionPane.INFORMATION_MESSAGE);

当我编译并输入相应字段时,错误“未找到列”会一直显示。我确保列名和数据是正确的,但我有更多的列,我没有包含在retrievePassword()方法中。我确信这两种方法中的任何一种似乎都是问题,但无论我怎么做,我似乎无法解决它。某种灵魂会帮助我吗?请?

4 个答案:

答案 0 :(得分:5)

您的查询看起来只选择ClickId字段,但在您的搜索结果中,您尝试获取其他字段。将SELECT *或SELECT与您需要的字段一起使用。

答案 1 :(得分:1)

这是正确的,如果您要从结果集中使用它们,则需要在选择查询中检索FirstName,LastName,Email和Password。

答案 2 :(得分:1)

您只选择clickid列。 尝试 从个人资料中选择* 或者更好地使用列表。

答案 3 :(得分:0)

嘿所有,我做了你们所说的并选择了所有专栏,这是成功的。但是当我实现下面的方法时

 String first = jTextFieldFirst.getText();
 String email = jTextFieldEmail.getText();
 Profile p2 = new Profile(jTextFieldId.getText());
 p2.retrievePassword();
 String firstName = p2.getFirstName();
 String email2 = p2.getEmail();

if(email == email2 && first == firstName)
 JOptionPane.showMessageDialog(null, "Your Password is "+p2.getPassword(),
        "Retrieve Password",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null, "Some information you entered is incorrect", "Retrieve Password",JOptionPane.INFORMATION_MESSAGE);

它一直显示来自else循环的jOptionPane。当我输入正确的字段时,我需要的是实际获取if循环=(。感谢您的所有帮助=)