Этот код должен показывать сообщение об ошибке после нажатия кнопки. Что делает buttonclick
, это проверить, соответствуют ли имя пользователя и пароль имени пользователя и паролю в базе данных.Показать предупреждение, если ничего не найдено из ResultSet в JavaFX
IF true, это покажет следующую сцену. если false, я хочу показать эту ошибку, которую я сделал. Отображение следующей сцены отлично работает, показывая, что ошибка не работает.
Это мой код:
public Pane createLogin() throws SQLException {
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(20, 150, 10, 10));
Button login = new Button("Login!");
TextField usernameField = new TextField();
usernameField.setPromptText("Username");
PasswordField passwordField = new PasswordField();
passwordField.setPromptText("Password");
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("ERROR");
alert.setHeaderText("OH SNAP");
alert.setContentText("I have a great message for you!");
login.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String username = usernameField.getText();
String password = passwordField.getText();
String query = "Select * from user WHERE username ='" + username + "' and password ='" + password + "'";
ResultSet rs = null;
System.out.println("hahah:" + username);
try {
rs = dataBase.executeQuery(query);
dataBase.executeDataRowQuery(query);
while (rs.next()) {
if (username.equals(rs.getString("username"))) {
if (password.equals(rs.getString("password"))) {
switchScreen(createOverview());
} else{
alert.showAndWait();
}
} else{
alert.showAndWait();
}
alert.showAndWait();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
});
gridPane.add(new Label("Username: "), 0, 0);
gridPane.add(usernameField, 0, 1);
gridPane.add(new Label("Password: "), 1, 0);
gridPane.add(passwordField, 1, 1);
gridPane.add(new Label("Login!"), 2, 0);
gridPane.add(login, 2, 1);
return gridPane;
}
[Little bobby tables] (http://bobby-tables.com/) был бы настолько горд. Если нет записи, вы не вводите это время, потому что rs.next() возвращает false! –