- Java code
while (rs.next()) { if (name.equals(rs.getString("user_name")) && password.equals(rs.getString("user_password"))) { System.out.println("登录成功"); } else { System.out.println("请输入正确的用户名和密码"); } }
现在运行的话就不管是否匹配成功,全部的信息都打印出来。
我现在只想提示一次即对比成功则“登录成功”,对比不成功的话也只提示一次“请输入正确的用户名和密码”,这该怎么办呢。
------解决方案--------------------
while 改成if
------解决方案--------------------
楼主这部分代码没有问题啊,是不是其他地方出错了
------解决方案--------------------
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;
}
}
}