Как сравнить jTextEntry со значением базы данных

try     
                       {

                                Class.forName("org.sqlite.JDBC");
                                 Connection c=DriverManager.getConnection("jdbc:sqlite:voter.db");
                                  ResultSet rs;
                                Statement s;
                                        s=c.createStatement();
                                 p = "select voterId,password  from voter where name='userName'";
                                  rs=s.executeQuery(p);
                while(rs.next())
                 {
                     vi=rs.getString("voterId");
                     pw=rs.getString("password");


                 if (voterId.equalsIgnoreCase(vi)&&Password.equalsIgnoreCase(pw))
                             {
                                           voting v =new voting();
                                           v.setVisible(true);
                                             this.dispose();

                              }else
                             {
                               System.out.println("Invalid pasword");
                              }
                        }

Это мой код формы входа в систему, где я пытаюсь сравнить идентификатор голосования и пароль jTextField с идентификатором избирателя и паролем, хранящимся в базе данных. используя neatbeans, но это не позволяет мне войти в систему, вместо этого я ввел правильное имя пользователя и пароль.

да, я пытаюсь сравнить значение строкового типа из набора результатов. Может быть, что-то не так, может быть, мой путь неправильный, пожалуйста, предложите мне

harshita soni 22.04.2018 13:50

Если voterId - это ваш JTextField для идентификатора пользователя, вам понадобится voterId.getText().equalsIgnoreCase(vi) для сравнения. Аналогично с Password.

Kevin Anderson 22.04.2018 13:55

здесь мой voterId - это строковый тип переменной, т.е. String voterId = jTextField3.getText (); и после этого я хочу сравнить его с vi, аналогично username = jTextField2.getText (), но когда я сравниваю и нажимаю кнопку входа в систему, он не отвечает мне, что означает, что ничего не происходит.

harshita soni 22.04.2018 14:57

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

VGR 22.04.2018 17:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
36
1

Ответы 1

Вы не выбираете строку базы данных для имени пользователя, введенного в графический интерфейс. Вы вообще не используете имя пользователя из графического интерфейса пользователя - в вашем запросе жестко запрограммирован 'userName'. Таким образом, вы получаете пароль для пользователя с буквальным именем userName.

Боковое примечание: хранение сырых паролей в базе данных в виде обычного текста - ужасная практика со стороны безопасности. У вас должен быть пароль с использованием уникальной соли и хешированный пароль. Пароль, введенный в GUI, должен быть хеширован с использованием того же алгоритма и использован в запросе. Таким образом, если кто-то украдет базу данных, он не сможет узнать пароли пользователей. Подробнее см. https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet.

Использование фреймворка Java, такого как безопасность Spring, решит за вас многие из этих проблем. См. Руководство по использованию Spring Security для создания формы входа в https://spring.io/guides/gs/securing-web/. В этом примере используется InMemoryUserDetailsManager, но замена его на JdbcUserDetailsManager создаст решение, использующее базу данных.

Другие вопросы по теме