Ошибка в коде Java: индекс параметра вне диапазона (1> количество параметров, которое равно 0) - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь аутентифицировать имя пользователя и пароль, если эта строка существует в базе данных.Но я получаю индекс параметра вне диапазона (1> количество параметров, которое равно 0).Пожалуйста, помогите

Scanner in = new Scanner(System.in);
String password = in .next();
String username = in .next();

PreparedStatement ps = 
                connect.prepareStatement
               ( "select  LastName,BirthDate from employees where LastName= '" + username + "'  and BirthDate = '" + password + "'"  );


            ps.setString (1, username);
            ps.setString (2, password);
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {

                 System.out.println("login completed");
            } else {
                // Quest not completed yet
                 System.out.println("login failed");

                }

1 Ответ

1 голос
/ 04 апреля 2019

Вы смешиваете конкатенацию строк с настройкой параметров подготовленного оператора. Вы должны использовать только один из двух, предпочтительно последний. Ваш код должен выглядеть так:

PreparedStatement ps = connect.prepareStatement ( 
    "select LastName,BirthDate from employees where LastName=? and BirthDate=?"
);
ps.setString (1, username);
ps.setString (2, password);
ResultSet rs = ps.executeQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...