[英]User login by comparing with user details in database
我想确保当用户输入用户名和密码时,通过检查输入是否与用户表中的某些行匹配来完成身份验证。 到目前为止,这里是代码:它仅允许数据库中的第一个用户登录。 请提出如何正确设置的建议。 谢谢
private class thehandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent ae) {
String namevalue = usertext.getText();
String pwdvalue = pwdtext.getText();
//read values from user table in sql database
try {
Class.forName("com.mysql.jdbc.Driver");
String conUrl = "jdbc:mysql://localhost/hall?" +
"user=root&password=blend";
Connection con = DriverManager.getConnection(conUrl);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user");
while(rs.next()) {
if(namevalue.equals(rs.getString("userName")) && pwdvalue.equals(rs.getString("password"))) {
JOptionPane.showMessageDialog(null, "You are logged in",
"Makhall login", JOptionPane.INFORMATION_MESSAGE);
//move on to homepage if user is valid
homePage home = new homePage();
home.setAlwaysOnTop(rootPaneCheckingEnabled);
}
else {
JOptionPane.showMessageDialog(null, "Incorrect username or password",
"Error", JOptionPane.ERROR_MESSAGE);
}
break;
}
}
catch (SQLException e) {
System.out.println("SQL Exception: "+ e.toString());
}
catch (ClassNotFoundException cE) {
System.out.println("Class Not Found Exception: "+ cE.toString());
}
}
}
抱歉,我认为这是糟糕的代码。 您将所有内容混合在一起:UI,数据库连接,查询等。Java是一种面向对象的语言。 优秀的对象设计的租户之一是凝聚力:让一个班级做好一件事。
首先将数据库查询分为一个数据访问对象。 使它正常工作,对其进行测试,并让其他客户简单地使用它。 通过让更简单的对象协作来构建复杂的解决方案。
您的直接问题是您的SELECT需要一个WHERE子句: WHERE username = ?
。
您只想查看手边用户的密码。
这个问号是故意的:使用PreparedStatement,而不是Statement。
您正在从数据库中选择所有用户。 永远不要这样做。 而是选择具有给定登录名的用户。 如果存在,请检查密码。 如果不存在,则登录本身不正确。
也:
我也做了同样的程序。 看这里:
String m=jt1.getText();
String n= new String(jt2.getPassword());
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/darshanproject","root","");
Statement st = con.createStatement();
String q="select * from emp where UID='"+m+"'";
ResultSet rs=st.executeQuery(q);
rs.next();
String user, pass;
user =rs.getString("UID");
pass =rs.getString("password");
{ if(m.compareTo(user)==0)
if(n.compareTo(pass)==0)
System.out.println("login Success");
else
System.out.println("Wrong Password");
}
}catch(Exception ex){
System.out.println(ex);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.