Java &引用;“未找到列”;错误
我需要以下错误的帮助。下面是方法retrievePassword()。我对它进行了编程,这样当调用Clickid时,我也可以检索所有其他数据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
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('
='')完整代码: