Моя форма входа в систему Java Swing не будет работать - PullRequest
2 голосов
/ 08 декабря 2011

Я наконец-то получил пароль, запросы, кнопку и соединение, но почему это так? Кажется, я не могу войти? что не так с моим обработчиком действий? пожалуйста, проверьте мой код

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.sql.*;

public class Login extends JFrame {

    private JLabel label1, label2;
    private JButton submit;
    private JTextField textfield1;
    private JPasswordField passfield;
    private JPanel panel;

    public Login() {

        setSize(300, 100);
        setVisible(true);

        label1 = new JLabel("User ID:");
        textfield1 = new JTextField(15);
        label2 = new JLabel("Password:");
        passfield = new JPasswordField(15);
        submit = new JButton("Submit");
        panel = new JPanel(new GridLayout(3, 1));

        panel.add(label1);
        panel.add(textfield1);
        panel.add(label2);
        panel.add(passfield);
        panel.add(submit);
        add(panel, BorderLayout.CENTER);

        ButtonHandler handler = new ButtonHandler();
        submit.addActionListener(handler);
    }// end login constructor

    private class ButtonHandler implements ActionListener {

        public void actionPerformed(ActionEvent arg0) {

            String user = textfield1.getText();
            char[] passChars = passfield.getPassword();
            Connection conn = Jdbc.dbConn();
            PreparedStatement ps = null;
            ResultSet rs = null;
            String pass = new String(passChars);

            if (passChars != null) {
                String sql = "SELECT employee_ID,employee_password FROM user where" +
                          "employee_ID='user' and employee_password=+'pass'";

                try {
                    ps = conn.prepareStatement(sql);
                    ps.setString(1, user);
                    ps.setString(2, pass);
                    rs = ps.executeQuery();
                    if (rs.next()) {
                        user = rs.getString("employee_id");
                        pass = rs.getString("employee_password");
                        JOptionPane.showMessageDialog(null,"Welcome "+user);
                    } else {
                        JOptionPane.showMessageDialog(null, "Wrong Input");
                    }
                } catch (Exception e) {

                } finally {
                    try {

                        rs.close();
                        ps.close();
                        conn.close();
                    } catch (Exception ee) {

                    }
                }

            }// end actionPerformed

        }// End ButtonHandler

    }// End of class
}

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

у вас есть два варианта PreparedStatement, оба верны

1) изменить String sql = .... определение

String sql = "SELECT employee_ID, employee_password FROM 
    user WHERE employee_ID = ? AND employee_password = ?";

2) поместить переменные в оператор SQL напрямую

String sql = "SELECT employee_ID, employee_password FROM user WHERE 
     employee_ID = '" + user + "' AND employee_password = '" + pass + "'";
2 голосов
/ 08 декабря 2011

Измените свой выбор

employee_ID=? and employee_password=?

http://www.javaworld.com/javaworld/jw-04-2007/jw-04-jdbc.html Или вы можете использовать именованные параметры

String query = "select * from people where (first_name = :name or last_name 
= :name) and address = :address");
NamedParameterStatement p = new NamedParameterStatement(con, query);
p.setString("name", name);
p.setString("address", address);
0 голосов
/ 08 декабря 2011

пожалуйста, перепишите ваш код следующим образом

if (passChars != null) {
                String sql = "SELECT employee_ID,employee_password FROM user where 
                          employee_ID=? and employee_password=?";

                try {
                    ps = conn.prepareStatement(sql);
                    ps.setString(1, user);
                    ps.setString(2, pass);
                    rs = ps.executeQuery();
                    if (rs.next()) {
                        user = rs.getString("employee_id");
                        pass = rs.getString("employee_password");
                        JOptionPane.showMessageDialog(null,"Welcome "+user);
                    } else {
                        JOptionPane.showMessageDialog(null, "Wrong Input");
                    }
                } catch (Exception e) {

                } finally {
                    try {

                        rs.close();
                        ps.close();
                        conn.close();
                    } catch (Exception ee) {

                    }
                }

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...