Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;“未找到列”;错误_Java_Database - Fatal编程技术网

Java &引用;“未找到列”;错误

Java &引用;“未找到列”;错误,java,database,Java,Database,我需要以下错误的帮助。下面是方法retrievePassword()。我对它进行了编程,这样当调用Clickid时,我也可以检索所有其他数据 public boolean retrievePassword() { // declare local variables boolean success = false; ResultSet rs = null; DBController db = new DBController(); // step 1 of using DB

我需要以下错误的帮助。下面是方法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);

当我编译并键入相应的字段时,错误“Column not found”不断出现。我已经确保了列名和数据是正确的,但是我有更多的列没有包含在retrievePassword()方法中。我确信这两种方法中的任何一种似乎是问题所在,但无论我如何做,我似乎都无法解决它。会有善良的灵魂帮助我吗?请?

没错,如果要从结果集中使用名字、姓氏、电子邮件和密码,您需要在select查询中检索它们。

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

您只选择clickid列。 尝试 从配置文件中选择*
或者最好使用列列表。

嘿,大家好,我照你们说的做了,选择了所有列,这是一个成功。但是当我实现下面的方法时

 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。实际上,我需要的是在键入正确的字段=(.感谢您的所有帮助=)

您甚至不应该有一个名为“检索密码”的函数,因为数据库根本不应该存储密码。它应该存储一个不可逆的密码散列。关于这一部分,我对数据库以外的东西还不是很在行。所以这次我使用了最原始的方法。请不要选择*。如果有一天有人决定稍微改变一下表的结构,这很容易出错。所有的地狱都会爆发。只选择你需要的。没有更多,没有更少。是的,你是对的,最好只选择你需要的,我提到过,以防他不知道如何全选。@darioo:我不确定除非你更改列名,否则“所有的地狱都会崩溃”,在这种情况下,显式select子句也会失败。您是否认为在处理结果集时,执行失败比稍后执行要好?还是你错误地认为OP/任何人都在使用列索引与RS进行交互?@Mark:我们遇到过一种情况,在很多地方使用了
select*
。此外,在RS上迭代时,使用了列索引。然后决定一个DB表需要“重组”。短篇故事:添加了一些列,交换了一些列。显然,所有选择都开始失败,必须重写。@SebastiaanvandenBroek什么意思:->未找到列:在“where子句”中找到1054未知列“”,而我的where子句是:->where(
'
='')完整代码: