我正在研究学生数据库管理程序,正在进行登录阶段。我在数据库中查询学生ID和密码,并尝试匹配学生输入的内容。找到匹配项时,login应该设置为true,它应该转到下一页,但由于某种原因,它永远不会传递我的if then语句。我不确定什么是错的,这个代码在下面。你会注意到system.out.println语句,那些我在那里可以看到它是否真的正确地通过数据库,并且据我所知,但是login next设置为true。我真的很感激任何帮助。
public void actionPerformed(ActionEvent e)
{
//int i;
//String name;
if(e.getSource()==logInButton)
{
String name="";
String password="";
name=inputField.getText();
password=inputField2.getText();
System.out.println(name);
System.out.println(password);
boolean login = false;
try {
connection = DriverManager.getConnection(connectionString, username, pass);
PreparedStatement statement = (PreparedStatement) connection.prepareStatement("SELECT * FROM students");
data = statement.executeQuery();
while(data.next()){
System.out.println(data.getObject("student_id"));
System.out.println(data.getObject("password"));
if (data.getObject("student_id") == name && data.getObject("password") == password){
login = true;
}
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(login == true){
System.out.println("login = true");
logInPanel.setVisible(false);
postLogInPanel.setVisible(true);
}
}
答案 0 :(得分:0)
在Java中,==
是对象标识。如果a==b
和a
是对内存中同一对象的引用,则b
为真。当您比较引用类型时,例如String
以及可能返回的e.getSource()
,您应该使用equals
方法查看值是否相同。