日期:2014-05-20  浏览次数:20606 次

连接数据库实现登录功能
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;
}
}
}