有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java登录表单

向大家问好

我目前正在使用MVC为公文包制作Java餐厅项目。现在,我被困在登录表单上。我的问题是我忘记了如何在MySQL中以用户(管理员或客户)身份登录

在我的登录表单中,有用户名文本字段、密码字段、登录和退出按钮enter image description here

没有用户类型,因为只有一个管理员。我不想和多个管理员打交道

数据库的名称为restaurant。现在,只有一个表:user。我手动插入了一些数据

enter image description here

登录成功后,视图将根据用户类型更改为Admin或User

这些是ControllerLogin和Database。我复制的数据库是从我同学的另一个项目粘贴的

    public class ControllerLogin extends MouseAdapter implements ActionListener {
    private ViewLogin view;
    private Database db;

    public ControllerLogin() {
        view = new ViewLogin();
        db = new Database();
        view.addActionListener(this);
        view.setVisible(true);
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();

        if (source.equals(view.getBtnLogin())) {

            btnLoginActionPerformed();
        }

        if (source.equals(view.getBtnExit())) {

            btnExitActionPerformed();
        }
    }

    public void btnLoginActionPerformed() {

    }

    public void btnExitActionPerformed() {
        System.exit(0);
    }
}

public class Database {

private Connection conn;
private Statement stmt;
private ResultSet rs;

public void connect() {

    String url = "jdbc:mysql://localhost/restaurant";
    String user = "root";
    String pass = "";

    try {
        conn = DriverManager.getConnection(url, user, pass);
        stmt = conn.createStatement();
    } catch (SQLException ex) {
        Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
    }
}

编辑1:

我搜索了如何制作登录表单的视频,找到了一个。我试着在我的程序上编写它,但仍然错误地说“java.lang.NullPointerException”

public void btnLoginActionPerformed() {

    db.connect();
    String sql = "Select * from user where username=? and password=?";
    try {

        pst = conn.prepareStatement(sql);
        pst.setString(1, view.getUsername());
        pst.setString(2, view.getPassword());
        rs = pst.executeQuery();

        if (rs.next()) {

            JOptionPane.showMessageDialog(null, "Welcome");

        } else {
            JOptionPane.showMessageDialog(null, "Invalid Username or Password", "Access Denied", JOptionPane.ERROR_MESSAGE);
        }

    } catch (Exception e) {

        JOptionPane.showMessageDialog(null, e);

    }

}

共 (1) 个答案

  1. # 1 楼答案

    您可以使用下面的代码来实现这一点

    public void btnLoginActionPerformed() {
    
        db.connect();
        String sql = "Select * from user where username=? and password=?";
        try {
            pst = conn.prepareStatement(sql);
            pst.setString(1, view.getUsername());
            pst.setString(2, view.getPassword());
            rs = pst.executeQuery();
    
            if (rs.next()) {
                if(view.getUsername.equals("Admin"))
                {
                   JOptionPane.showMessageDialog(null, "Welcome admin");
                }else
                {
                   JOptionPane.showMessageDialog(null, "Welcome user");
                }
            } else {
                JOptionPane.showMessageDialog(null, "Invalid Username or Password", "Access Denied", JOptionPane.ERROR_MESSAGE);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    
    }