因此,我有这个登录控制器,它在细节正确时执行'else‘块,这意味着键入的用户名和密码存在于数据库中。这是不应该发生的。应该发生的是,如果细节是正确的,应该执行' if‘块,然后它转到另一个场景,如果细节是错误的,将弹出一个警告( 'else’块的内容)。
Log_inController.java
public class Log_inController implements Initializable {
private DBConnection dc;
@FXML TextField txtUn;
@FXML PasswordField txtPw;
@FXML Button btnLogin;
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
public void log_in (ActionEvent event) throws SQLException, IOException {
dc = new DBConnection();
try{
String name = txtUn.getText();
String pass = txtPw.getText();
Connection conn = dc.Connect();
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM tbl_lib WHERE lib_acc = '"+ name +"'");
if(rs.next()){
String database_name = rs.getString(1);
String database_pass = rs.getString(2);
if(name.equals(database_name) && pass.equals(database_pass)){
Parent x=FXMLLoader.load(getClass().getResource("/Collection_UI/Home.fxml"));
Scene M= new Scene(x);
Stage app=(Stage)((Node)event.getSource()).getScene().getWindow();
app.setScene (M);
app.show();
}else{
Alert alert = new Alert(AlertType.WARNING);
alert.setHeaderText("Invalid Credentials");
alert.setContentText("Please input your valid username and password then try again");
alert.showAndWait();
}
}
}
catch(SQLException ex){
System.err.println("Error"+ex);
}
}
}
以下是输入正确详细信息时的屏幕截图:
怎样才能解决这个问题并达到预期的效果呢?请。
发布于 2018-09-30 07:49:26
问题可能在语句中。尝试使用PreparedStatement来解决SQL语法的典型问题。
PreparedStatement st = conn.createStatement()("SELECT * FROM tbl_lib WHERE lib_acc = ?);
st.setString(1, txtUn.getText());
https://stackoverflow.com/questions/52570788
复制相似问题