Java 如何将jTextEntry与数据库值进行比较

Java 如何将jTextEntry与数据库值进行比较,java,jdbc,passwords,Java,Jdbc,Passwords,这是我的登录表单代码,我试图将jTextField的voteID和密码与存储在数据库中的voterID和密码进行比较。使用neatbeans,但它不允许我登录,我输入了正确的用户名和密码 您没有为gui中输入的用户名选择数据库行。您根本没有使用gui中的用户名-您的查询已硬编码“用户名”。因此,您将获得名为“用户名”的用户的密码 旁注:从安全角度来看,将原始密码以纯文本形式存储在数据库中是一种可怕的做法。您应该使用唯一的salt设置密码并存储哈希密码。在GUI中输入的密码应该使用相同的算法进行散

这是我的登录表单代码,我试图将jTextField的voteID和密码与存储在数据库中的voterID和密码进行比较。使用neatbeans,但它不允许我登录,我输入了正确的用户名和密码

您没有为gui中输入的用户名选择数据库行。您根本没有使用gui中的用户名-您的查询已硬编码
“用户名”
。因此,您将获得名为“
用户名”
的用户的密码

旁注:从安全角度来看,将原始密码以纯文本形式存储在数据库中是一种可怕的做法。您应该使用唯一的salt设置密码并存储哈希密码。在GUI中输入的密码应该使用相同的算法进行散列,并在查询中使用。这样,如果有人窃取了数据库,他将无法了解用户密码。有关更多详细信息,请参阅


使用像SpringSecurity这样的Java框架可以为您解决许多这些问题。有关如何使用Spring安全性创建登录表单的指南,请参阅。该示例使用InMemoryUserDetailsManager,但使用JdbcUserDetailsManager对其进行回复将创建使用数据库的解决方案。

是的,我正在尝试比较resultset中字符串类型的值。可能有问题,可能是我的方法有问题,请建议meIf
voterId
是您的
JTextField
用户ID,您需要
voterId.getText().equalsIgnoreCase(vi)
进行比较。与密码类似,这里我的voterId是一个字符串类型的变量,即string voterId=jTextField3.getText();之后,我想将其与vi进行比较,类似地,username=jTextField2.getText(),但当我比较并单击登录按钮时,它不会响应我,这意味着什么也不会发生。如果您希望其他人分析您的代码,请礼貌地对其进行适当且一致的缩进。
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");
                              }
                        }