while (rs.next()) {
if (name.equals(rs.getString("user_name"))
&& password.equals(rs.getString("user_password"))) {
System.out.println("登录成功");
} else {
System.out.println("请输入正确的用户名和密码");
}
}现在运行的话就不管是否匹配成功,全部的信息都打印出来。
我现在只想提示一次即对比成功则“登录成功”,对比不成功的话也只提示一次“请输入正确的用户名和密码”,这该怎么办呢。

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.FileInputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;public class LoginFrame { private JFrame jf = new JFrame("Login");
    private JTextField userField = new JTextField(20);
    private JTextField passField = new JTextField(20);
    private JButton loginButton = new JButton("Login"); public void init() throws Exception { loginButton.addActionListener(new ActionListener() { @Override
    public void actionPerformed(ActionEvent e) {
    try {
    if (validate(userField.getText(), passField.getText())) {
    JOptionPane.showMessageDialog(jf, "login success");
    } else {
    JOptionPane.showMessageDialog(jf, "login  failure");
    }
    } catch (Exception e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }// TODO Auto-generated method stub }
    }); jf.add(userField, BorderLayout.NORTH);
    jf.add(passField);
    jf.add(loginButton, BorderLayout.SOUTH);
    jf.pack();
    jf.setVisible(true);
    jf.setLocation(500, 250);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) throws Exception {
    new LoginFrame().init();
    } public boolean validate(String userPass, String userName) throws Exception {
    Class.forName("com.mysql.jdbc.Driver");
    try (Connection conn = DriverManager
    .getConnection("jdbc:mysql://localhost:3306/database_name",
    "root", "password");
    PreparedStatement ps = conn
    .prepareStatement("select *from jdbc_test where jdbc_name=? and jdbc_id=?")) {
    ps.setString(1, userPass);
    ps.setString(2, userName);
    try (ResultSet rs = ps.executeQuery()) { if (rs.next()) {
    return true;
    } } catch (Exception e) {
    e.printStackTrace();
    } return false;
    }
    }
    }