无法使用 Swing 登录
Posted
技术标签:
【中文标题】无法使用 Swing 登录【英文标题】:Cannot login using Swing 【发布时间】:2019-08-30 19:35:52 【问题描述】:我创建了一个登录 GUI 登录表单,并在用户名和密码与数据库中输入的匹配时尝试登录。但是,我无法登录
我在代码中找不到任何错误。
public class Login
private JTextField nameTextField;
private JButton submitButton;
private JTextField passwordTextField;
private JLabel Message;
private JPanel LoginPanel;
public static void main(String[] args)
JFrame frame=new JFrame("Login");
frame.setContentPane(new Login().LoginPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(650,500);
frame.setVisible(true);
public Login()
submitButton.addActionListener(new ActionListener()
@Override
public void actionPerformed(ActionEvent e)
Connection con = null;
try
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/java_db", "root", "");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from employee");
while (rs.next())
if (rs.getString("name").equals(nameTextField.getText()) && rs.getString("password").equals(passwordTextField.getText()))
Message.setText("Login Success");
else
Message.setText("Failed");
con.close();
catch (SQLException e1)
e1.printStackTrace();
catch (ClassNotFoundException e1)
e1.printStackTrace();
);
如果密码和用户名匹配,我希望应用程序显示“登录成功”消息
【问题讨论】:
您在Message
中为数据库中遇到的每个用户设置文本。因此,如果最后一个不匹配,则会出现登录错误
1) 请参阅 Detection/fix for the hanging close bracket of a code block 了解我无法再费心修复的问题。 2) 请学习常见的 Java 命名法(命名约定 - 例如EachWordUpperCaseClass
、firstWordLowerCaseMethod()
、firstWordLowerCaseAttribute
,除非它是 UPPER_CASE_CONSTANT
)并始终如一地使用它。
这不是您应该验证密码的方式。请阅读如何安全地散列和检查密码。
【参考方案1】:
目前您正在扫描整个表,实际上是检查数据库中最后一个元素的用户名/密码。 我只需获取与输入的用户名对应的(唯一)元素并验证密码。 像这样的:
PreparedStatement st = con.prepareStatement("SELECT password FROM employee WHERE name = ?");
st.setString(1, nameTextField.getText().trim());
ResultSet rs = st.executeQuery();
if (rs.next() && rs.getString(1).equals(passwordTextField.getText()))
Message.setText("Login Success");
else
Message.setText("Failed");
rs.close();
con.close();
【讨论】:
以上是关于无法使用 Swing 登录的主要内容,如果未能解决你的问题,请参考以下文章