Невозможно войти через Swing - PullRequest
1 голос
/ 09 апреля 2019

Я создал форму входа в систему с графическим интерфейсом пользователя и попытался войти в систему, если имя пользователя и пароль совпадают с указанными в базе данных. Но я не могу войти

Не удалось найти ошибку в коде.

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();
            }


        }

    });
}}

Если пароль и имя пользователя совпадают, я хочу, чтобы приложение показывало сообщение «Войти успешно»

1 Ответ

1 голос
/ 09 апреля 2019

В настоящее время вы сканируете всю таблицу и фактически проверяете имя пользователя / пароль последнего элемента в БД.
Я бы просто получил (уникальный) элемент, соответствующий введенному имени пользователя, и проверил пароль.
Примерно так:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...