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, но это не позволяет мне войти в систему, вместо этого я ввел правильное имя пользователя и пароль.
Если voterId - это ваш JTextField для идентификатора пользователя, вам понадобится voterId.getText().equalsIgnoreCase(vi) для сравнения. Аналогично с Password.
здесь мой voterId - это строковый тип переменной, т.е. String voterId = jTextField3.getText (); и после этого я хочу сравнить его с vi, аналогично username = jTextField2.getText (), но когда я сравниваю и нажимаю кнопку входа в систему, он не отвечает мне, что означает, что ничего не происходит.
Если вы хотите, чтобы другие проанализировали ваш код, пожалуйста, сделайте им любезность, правильно и последовательно сделав отступы.




Вы не выбираете строку базы данных для имени пользователя, введенного в графический интерфейс. Вы вообще не используете имя пользователя из графического интерфейса пользователя - в вашем запросе жестко запрограммирован '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 создаст решение, использующее базу данных.
да, я пытаюсь сравнить значение строкового типа из набора результатов. Может быть, что-то не так, может быть, мой путь неправильный, пожалуйста, предложите мне