ResultSet.next() 没有选择 jPasswordField && jTextField

ResultSet.next() not selecting jPasswordField && jTextField

我现在正在创建一个登录页面,但是每次我尝试 "login" 我都会收到 "Your username and password dont match" 消息,即使用户名和密码有效并存储在数据库中也是如此。我什至无法从其他在线资源中弄清楚这一点,因为据我所知它应该有效吗?

private void jButtonLoginActionPerformed(java.awt.event.ActionEvent evt) 
{                                             
    Connection con = myConnection.getConnection();
    PreparedStatement pscon;
    ResultSet rscon;

    try 
    {
        pscon = con.prepareStatement("SELECT * dbname.user WHERE 'username' = ? AND 'password' = ?");
        pscon.setString(1, jTextFieldUsername.getText());
        pscon.setString(2, String.valueOf(jPasswordFieldPass.getPassword()));
        rscon = pscon.executeQuery();

        if(rscon.next())
        {
            JOptionPane.showMessageDialog(null, "Logged in successfully!");
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Your username and password don't match!");
        }
    } 
    catch (SQLException ex) 
    {
        Logger.getLogger(LoginPage.class.getName()).log(Level.SEVERE, null, ex);
    }
}

在此先感谢您的帮助!

您的查询有误。

SELECT * dbname.user WHERE 'username' = ? AND 'password' = ?

应该是

SELECT * FROM dbname.user WHERE 'username' = ? AND 'password' = ?

你错过了 "FROM"。此外,您不应存储未加密和未散列的密码。

你的sql写错了,你需要去掉usernamepassword多余的',加上FROM关键字

所以改变

 pscon = con.prepareStatement("SELECT * dbname.user WHERE 'username' = ? AND 'password' = ?"); 

 pscon = con.prepareStatement("SELECT * FROM dbname.user WHERE username = ? AND password = ?");

或添加 ` 来包裹列名

 pscon = con.prepareStatement("SELECT * FROM dbname.user WHERE `username` = ? AND `password` = ?");