Не могу сравнить вводные данные с данными в mysql

Рейтинг: -1Ответов: 1Опубликовано: 23.03.2023

Пытаюсь проверить на существование пользователя в БД, но ответ всегда: «Новый пользователь»

loginButton.setOnAction(actionEvent -> {

                        String number = number_field.getText();
                        String email = email_field.getText();
                        login(number, email);

                    });

    }

    private void login(String number, String email) {
        DatabaseHandler dbHandler = new DatabaseHandler();
        User user = new User();
        user.setNumber(number);
        user.setEmail(email);
        dbHandler.getUser(user);
        ResultSet resultSet = dbHandler.getUser(user);

        try {
            if (resultSet.next()) {
                System.out.println("Уже в базе");
            } else {
                System.out.println("Новый пользователь");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
public ResultSet getUser(User user) {
        ResultSet resultSet = null;

        String select = "SELECT * FROM " + Const.USER_TABLE + " WHERE " + Const.USERS_NUMBER + "=? AND " + Const.USERS_EMAIL + "=?";

        try {
            PreparedStatement prSt = this.getDbConnection().prepareStatement(select);
            prSt.setString(1, user.getEmail());
            prSt.setString(2, user.getNumber());
            resultSet = prSt.executeQuery();
        } catch (SQLException var5) {
            throw new RuntimeException(var5);
        } catch (ClassNotFoundException var6) {
            throw new RuntimeException(var6);
        }
        return resultSet;
    }

}
SELECT * FROM db_user.us LIMIT 0, 1000

Ответы

▲ 0Принят

У вас перепутаны поля в условии в запросе при установке параметров в PreparedStatement, поэтому результат запроса всегда пустой.

Первый параметр должен быть number, а второй - email:

String select = "SELECT * FROM " + Const.USER_TABLE + 
    " WHERE " + Const.USERS_NUMBER + "=? AND " + Const.USERS_EMAIL + "=?";

PreparedStatement prSt = this.getDbConnection().prepareStatement(select);
prSt.setString(1, user.getNumber());
prSt.setString(2, user.getEmail());