javafx - функция входа в систему выполняет блок else, если данные для входа верны, но ничего не происходит, если данные неверны - PullRequest
0 голосов
/ 29 сентября 2018

Итак, у меня есть этот контроллер входа в систему, который выполняет блок '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);
 }

         }

}

Вот скриншот, когда вводятся правильные данные:

https://imgur.com/8k0s7ia

Что можетбыть сделано, чтобы исправить это и достичь желаемого эффекта?Пожалуйста. * * 1013

1 Ответ

0 голосов
/ 30 сентября 2018

Проблема может быть в заявлении.Попробуйте использовать PreparedStatement для решения типичных проблем с SQL-синтаксисом.

PreparedStatement st = conn.createStatement()("SELECT * FROM tbl_lib WHERE lib_acc = ?);
st.setString(1, txtUn.getText());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...