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写错了,你需要去掉username
和password
多余的'
,加上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` = ?");
我现在正在创建一个登录页面,但是每次我尝试 "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写错了,你需要去掉username
和password
多余的'
,加上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` = ?");