【发布时间】:2017-08-05 08:25:04
【问题描述】:
我正在尝试登录,将输入的密码和用户名与我的数据库进行比较,如果它们都匹配,您可以登录。 我刚开始使用 MySQL 和 BCrypt。 到目前为止,这是我的代码:
@FXML
void anmeldenButton(ActionEvent event) throws NamingException, ClassNotFoundException {
String myUrl = "jdbc:mysql://localhost:3306/pwmanager?verifyServerCertificate=false&useSSL=true";
Connection conn = null;
username = tfuser1.getText().toString();
try {
conn = DriverManager.getConnection(myUrl, "", "");
query = "SELECT benutzername, passwort FROM nutzer WHERE (benutzername = ? and passwort = ?)";
PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
while (rs.isBeforeFirst()) {
checkUser = rs.getString(1);
checkPass = rs.getString(3);
if (BCrypt.checkpw(pf1.getText(), checkPass) && (checkUser.equals(username))) {
System.out.println("yay");
} else {
System.out.println("ney");
}
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
感谢您的帮助!
【问题讨论】:
-
错过了问题...?
-
啊s***对不起!我没有得到结果! if 语句永远不会是真或假
-
你有一个 if there 有两个条件。你有没有想过使用调试器和/或额外的打印语句来嗯,也许可以得到所有的细节来理解为什么 if 去它的 else 分支?
-
除此之外:您正在混合不同的层;您的 ui 代码不应该直接与数据库对话。您在这些层之间放置抽象,以免一个类在几个怪物方法中完成所有事情。
标签: java mysql database hash bcrypt